9300端口是使用tcp客户端连接使用的端口;(es之间通讯的端口)
9200端口是通过http协议连接es使用的端口;(外部与es通讯的端口)
官方:https://artifacts.elastic.co/downloads/elasticsearch/
首先下载安装包,这里不再赘述
1.解压进入/data1/elasticsearch/elasticsearch-6.5.1/config目录
配置elasticsearch.yml
cluster.name: elasticsearch_houbank //集群名称
node.name: es-154 //节点名称
network.host: xx.xx.xx.154 //默认值为回环地址127.0.0.1。如果是单节点集群,不需要设置。但多节点集群必须通过此配置,把节点连接成一个集群。
集群还需配置以下几个:
discovery.zen.ping.unicast.hosts: ["xx.xx.xx.150", "xx.xx.xx.151"]
discovery.zen.minimum_master_nodes: 2 //这个配置是为了防止脑裂,半数以上的节点能够通信时才会选举新的主节点( N/2+1, N是集群中节点的数量)
启动:./bin/elasticsearch -d (-d后台运行)
报错:[2019-03-13T16:29:44,032][ERROR][o.e.b.Bootstrap ] [es-154] node validation exception
[1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:vi /etc/sysctl.conf
添加 :vm.max_map_count=262144
执行:sysctl -p 后重启es(sysctl.conf是系统内核的一些参数)
(未运行)156:/data1/elasticsearch
155:/home/elasticsearch(目录权限不能是root)
maven中配置的es依赖要和装的版本一致
jdk要1.8
kibana:155 /home/kibana
10.150.10.155:9601
kibana开启:sudo nohup ./kibana &
1、用途
基础:存储数据
es天然支持分布式,具备存储海量数据的能力,其搜索和数据分析的功能都建立在es存储的海量的数据之上
核心能力:搜索
es使用倒排索引,每个字段都被索引且可用于搜索,更是提供了丰富的搜索api,在海量数据下近实时实现近秒级的响应
核心能力:数据分析
除了对搜索的支持,es也提供了大量数据分析的api,为es提供了数据分析的能力
和mysql数据库对比
MySQL ElasticSearch
Database Index
Table Type
Row Document
Column Field
Schema Mapping
Index Everying is indexed
SQL Query DSL
select * from .. GET http://...
update table .. PUT http://...
启动:./home/elasticsearch/elasticsearch-6.5.1/bin/elasticsearch -d (-d是在后台运行)
查看es工作正常与否的信息,Elastic 返回一个 JSON 对象,包含当前节点、集群、版本等信息。:curl 'http://xx.xx.xx.154:9200/?pretty'
浏览器访问:http://xx.xx.xx.154:9200/
_cat API检查集群健康状态:curl 'localhost:9200/_cat/health?v' (绿色表示一切正常,黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用)
查看所有index:curl 'http://xx.xx.xx.154:9200/_cat/indices?v'
查看集群所有节点:curl 'xx.xx.xx.154:9200/_cat/nodes?v'
创建index(es的索引类似mysql的database)
curl -XPUT "http://xx.xx.xx.154:9200/music/"
插入document,插入时需要指定type和id(Content-Type: application/json是6新加的特性,在5.x中没有,是新增的安全配置)
curl -H "Content-Type: application/json" -XPUT "http://xx.xx.xx.154:9200/music/songs/1" -d '{ "name": "Deck the Halls", "year": 1885, "lyrics": "Fa la la la la" }'
查看document,这里含义是获取索引是music下类型是songs,id是1的数据(加了?pretty可以让json分行,不在一行显示看起来清晰)
curl -XGET "http://xx.xx.xx.154:9200/music/songs/1?pretty"
修改document
curl -H "Content-Type: application/json" -XPUT "http://xx.xx.xx.154:9200/music/songs/1" -d
'{ "name":"Deck the Halls", "year": 1886, "lyrics":"爱滴魔力转圈圈" }'
更新document(个人理解,修改是修改整个json,所以修改必须是完整的json信息,更新是根据key值来选择性更新)
curl -H "Content-Type: application/json" -XPOST "http://xx.xx.xx.154:9200/music/songs/1/_update?pretty" -d '{"doc":{"name":"好汉歌","lyrics":"路见不平一声吼"}}'
删除document,或索引
curl -XDELETE "http://xx.xx.xx.154:9200/music"
语句格式总结:curl -X
集群模式:
curl 'http://xx.xx.xx.154:9200/_cat/nodes?pretty' //查看es集群中的节点信息,*代表主节点
查询语句:
curl 'http://10.150.10.155:9200/kafka_real/_search?q=*&pretty' //查询kafka_real索引(数据库)中的全部数据,其中 q=* 表示匹配索引中所有的数据
等价于:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match_all": {} }
}'
匹配所有数据,但只返回1个:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match_all": {} },
"size": 1
}'
返回从11到20的数据。(索引下标从0开始):
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match_all": {} },
"from": 10,
"size": 10
}'
上述示例匹配所有的索引中的数据,按照balance字段降序排序,并且返回前10条(如果不指定size,默认最多返回10条):
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match_all": {} },
"sort": { "balance": { "order": "desc" } }
}'
返回account_number 为20 的数据:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match": { "account_number": 20 } }
}'
返回address中包含mill的所有数据::
curl -H "Content-Type: application/json" -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match": { "address": "mill" } }
}'
返回地址中包含mill或者lane的所有数据:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match": { "address": "mill lane" } }
}'
Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。
顾名思义,Logstash 收集数据对象就是日志文件。由于日志文件来源多(如:系统日志、服务器 日志等),且内容杂乱,不便于人类进行观察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容,方便开发者或运维人员观察,从而有效的分析系统/项目运行的性能,做好监控和预警的准备工作等
logstash配置:
tar -zxvf logstash-5.6.3.tar.gz
bin下面新增conf文件
input{
kafka{
bootstrap_servers => ["10.150.10.152:9092"]
client_id => "test"
group_id => "logstash-es"
auto_offset_reset => "latest"
consumer_threads => 5
decorate_events => "true"
topics => ["realtime-monitor"]
type => "kafka-to-elas"
}
}
#filter {
# if [@metadata][kafka][topic] == "auth" {
# mutate {
# add_field => {"[@metadata][index]" => "auth-%{+YYYY.MM.dd}"}
# }
# } else if [@metadata][kafka][topic] == "base" {
# mutate {
# add_field => {"[@metadata][index]" => "base-%{+YYYY.MM.dd}"}
# }
#
# }else if [@metadata][kafka][topic] == "clearing" {
#
# mutate {
# add_field => {"[@metadata][index]" => "clearing-%{+YYYY.MM.dd}"}
# }
# }else{
# mutate {
# add_field => {"[@metadata][index]" => "trademgt-%{+YYYY.MM.dd}"}
# }
# }
# # remove the field containing the decorations, unless you want them to land into ES
# mutate {
# remove_field => ["kafka"]
# }
#}
output{
elasticsearch{
hosts => ["10.150.10.155:9200"]
#index => "error-%{+YYYY.MM.dd}"
index => "kafka_real"
timeout => 300
}
运行:bin/logstash -f xx.conf