一、安装
(一)Elastic search
1. 拉取镜像:docker pull elasticsearch:7.4.2
2. 创建容器:docker run -d --name es -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" elasticsearch:7.4.2
3. 进入es容器,在文件config/elasticsearch.yml中增加以下跨域信息:
http.cors.enabled: true
http.cors.allow-origin: "*"
4. 重启es容器
(二)Es-head 可视化插件
1. 拉取镜像:docker pull elasticsearch-head:5
2. 创建容器:docker run -d -p 9100:9100 --name es-head mobz/elasticsearch-head:5
3. 访问http://localhost:9100,如下图所示代表连接成功
4. 新建索引时,若报如下错误:
{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}
解决方法:进入es-head容器中-》进入_site文件夹-》修改vendor.js两处代码
① 第6686行:
contentType: "application/x-www-form-urlencoded",
-》
contentType: "application/json;charset=UTF-8",
② 第7574行:
var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
-》
var inspectData = s.contentType === "application/json;charset=UTF-8" &&
(三)Kibana
1. 拉取镜像(版本与es一致):docker pull kibana:7.4.2
2. 创建容器:docker run -d -p 5601:5601 --name kibana kibana:7.4.2
3. 进入kibana容器,在文件config/kibana.yml中,修改hosts地址
http://172.17.0.1:9200
4. 重启kibana容器后访问http://localhost:5601,若访问报错:Kibana server is not ready yet,耐心等待一会,若还报错则进入容器执行以下两个命令后再次重启kibana容器:
① curl -u elastic:changeme -XDELETE 172.17.0.1:9200/_xpack/security/privilege/kibana-.kibana/space_all
② curl -u elastic:changeme -XDELETE 172.17.0.1:9200/_xpack/security/privilege/kibana-.kibana/space_read
5. 汉化设置:进入kibana容器中,在config/kibana.yml文件最后增加:i18n.locale: "zh-CN"。然后重启kibana容器即可
(四)Logstash
1. 拉取镜像(版本与es一致):docker pull logstash:7.4.2
2. 在本地创建logstash/logstash.yml,输入以下内容
path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash
3. 在本地创建logstash/conf.d/logstash_dev.conf
4. 创建容器:
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 -p 5044:5044 --name logstash -v ./logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v ./logstash/conf.d/:/usr/share/logstash/conf.d/ logstash:7.4.2
(五)IK分词器
1. 安装
l 进入es容器plugins文件夹中,下载ik7.4.2:
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
l 解压至ik7.4.2文件夹中:
unzip elasticsearch-analysis-ik-7.4.2.zip -d ik7.4.2
l 删除下载包及修改ik7.4.2权限
rm -rf ik-7.4.2.zip
chmod -R 777 ik7.4.2/
l 重启es容器
2. 增加分词
l 进入到ik7.4.2/config 文件夹中
l 新增一个 xxx.dic文件,写入想要的分词
l 打开IKAnalyzer.cfg.xml文件,引入刚刚新增的dic文件
l 重启es容器
3. 分词使用
打开kibana-》开发工具
从上图可以看出 “可安” 被es当成了一个词组
二、ES基本操作
(一)Rest风格说明
一种软件架构风格,并不是一个死规定,只是提供了一组设计原则和约束条件,用于客户端与服务端交互的软件。基于此风格设计的软件可以更简介、更有层次、更易于实现缓存等机制。
基于rest的es api设计:
method |
url地址 |
描述 |
PUT |
域名/索引名称/类型名称/文档id |
创建文档(指定文档id) |
POST |
域名/索引名称/类型名称 |
创建文档(随机文档id) |
POST |
域名/索引名称/类型名称/文档id/_update |
修改文档 |
DELETE |
域名/索引名称/类型名称/文档id |
删除文档 |
GET |
域名/索引名称/类型名称/文档id |
查询指定id的文档 |
POST |
域名/索引名称/类型名称/_search |
查询所有数据 |
(二)基本操作
1. 创建
① 创建文档数据(不推荐):
PUT /索引名称/类型名称/文档id
{请求体}
在kibana工具中执行新增索引命令
在es-head工具中查看到数据
② 创建指定类型的索引规则:
PUT /索引名称
{请求体}
③ 创建默认类型的文档数据(推荐!!!)
说明:如果文档字段没有被指定,那么es会默认指定字段类型。
PUT /索引名称/_doc/文档id
{请求体}
2. 获取
① 索引文档字段类型
GET /索引名称
② 指定的文档数据
GET /索引名称/_doc/文档id
③ 所有文档数据
POST /索引名称/_doc/_search
④ 简单条件查询
GET /索引名称/_doc/_search?q=字段名:字段值
⑤ 扩展命令
获取es当前信息(版本、健康值等):GET _cat/
3. 修改:
① PUT(不推荐),需要写全所有字段
PUT /索引名称/_doc/文档id
{请求体}
② POST(推荐!!!)
POST /索引名称/_doc/文档id/_update
{请求体}
4. 删除:
① 删除索引:DELETE /索引名称
② 删除文档:DELETE /索引名称/_doc/文档id
(三)复杂查询
文档地址:(接口太多了,就不一一举例了)https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html