引言
介绍
基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
更适用于集群部署,适合各类 分词,全文搜索,通过建立索引(分片,按节点分片)来实现更快的搜索
Elasticsearch是与Logstash的数据收集和日志解析引擎以及Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。
本文只做单节点运行
官方介绍
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
注意事项
- 单点服务器维持稳定可能需要常驻内存 4G 以上
- 单点ELK维持稳定可能需要CPU 4核心 以上
参考文章
下载集群所需镜像 zookeeper kafka
1 | docker pull zookeeper |
单节点无内网IP使用
1 | docker network create elkwork |
创建内部网络后在每次 docker run 的时候 增加参数 --net elkwork
elastic相关
旧版本
1
2
3docker pull docker.elastic.co/elasticsearch/elasticsearch:5.6.8
docker pull docker.elastic.co/kibana/kibana:5.6.8
docker pull docker.elastic.co/logstash/logstash:5.6.8新版本
1
2
3
4docker pull docker.elastic.co/elasticsearch/elasticsearch:7.7.0
docker pull docker.elastic.co/kibana/kibana:7.7.0
docker pull docker.elastic.co/logstash/logstash:7.7.0
docker pull store/elastic/filebeat:7.7.0
启动elasticsearch 自行替换版本
"discovery.type=single-node"
单节点1
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:5.6.8
默认用户名 默认密码
elastic changeme
测试是否已经连通-u elastic:changeme
验权1
curl -u elastic:changeme localhost:9200
浏览器端口访问测试
elasticsearch 各类语法
基本
浏览器访问http://xxx.xx.xxx.xx:9200/_cat/indices?v
查看当前节点的所有 Indexhttp://xxx.xx.xxx.xx:9200/_mapping?pretty=true
列出每个 Index 所包含的 Type
验权机制增加参数 -u elastic:changeme
验权
命令行访问curl -u elastic:changeme -X PUT 'localhost:9200/weather'
可以直接向 Elastic 服务器发出 PUT 请求curl -u elastic:changeme -X DELETE 'localhost:9200/weather'
发出 DELETE 请求,删除这个 Index
插入数据
1 | curl -X POST 'localhost:9200/account/person' -d ' |
读取数据
1 | curl 'localhost:9200/account/person/1?pretty=true' |
示例
1 | { |
删除记录
1 | curl -X DELETE 'localhost:9200/accounts/person/1' |
更新记录
1 | curl -X PUT 'localhost:9200/accounts/person/1' -d ' |
返回所有记录
1 | curl 'localhost:9200/accounts/person/_search' |
- 索引 :
/Index/Type/_search
- total:返回记录数,本例是2条。
- max_score:最高的匹配程度,本例是1.0。
- hits:返回的记录组成的数组。
查询记录
1 | curl 'localhost:9200/accounts/person/_search' -d ' |
- size 返回数量
- from 开始位置
- OR搜索,当前搜索的示例是
软件
或系统
- AND搜索示例
1
2
3
4
5
6
7
8
9
10{
"query": {
"bool": {
"must": [
{ "match": { "desc": "软件" } },
{ "match": { "desc": "系统" } }
]
}
}
}
参考文章
启动kibana 自行替换版本
1 | docker run -d --name kibana -p 8001:5601 docker.elastic.co/kibana/kibana:5.6.8 |
kibana 容器内部修改配置ip1
Vi ./config/kibana.yml
重启容器使配置生效
配置 logstash
1 | mkdir /home/tjy/docker/logstash/ |
1 | path.config: /usr/share/logstash/conf.d/*.conf |
1 | vi /home/tjy/docker/logstash/conf.d/test.conf |
1 | input { |
启动logstash并挂载
1 | docker run -it -d -p 8011:5044 -p 9600:9600 --name logstash -v /home/tjy/docker/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /home/tjy/docker/logstash/conf.d/:/usr/share/logstash/conf.d/ docker.elastic.co/logstash/logstash:5.6.8 |
配置 filebeat
下载 通用配置文件
1 | mkdir /Users/XXX/Downloads/Docker/filebeat/ |
配置监听 Nginx log
1 | filebeat.config: |
filebeat 配合 logstash 挂载并启动
以下映射的路径为我自己电脑的路径,需要自行修改!1
docker run --name filebeat --user=root -d --net elkwork -v /usr/local/var/log/nginx/:/var/log/nginx/ -v /Users/XXX/Downloads/Docker/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml -v /var/run/docker.sock:/var/run/docker.sock store/elastic/filebeat:7.7.0