Docker下的Elastic search

一、安装

(一)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容器

Docker下的Elastic search

 

(二)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,如下图所示代表连接成功

 Docker下的Elastic search

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://elasticserach:9200 改为

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文件,写入想要的分词

 Docker下的Elastic search

 

l 打开IKAnalyzer.cfg.xml文件,引入刚刚新增的dic文件

 Docker下的Elastic search

 

l 重启es容器

3. 分词使用

打开kibana-》开发工具

Docker下的Elastic search

从上图可以看出 “可安” 被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工具中执行新增索引命令

Docker下的Elastic search

 

在es-head工具中查看到数据

 Docker下的Elastic search

 

② 创建指定类型的索引规则:

PUT /索引名称

{请求体}

Docker下的Elastic search

 

③ 创建默认类型的文档数据(推荐!!!)

说明:如果文档字段没有被指定,那么es会默认指定字段类型。

PUT /索引名称/_doc/文档id

{请求体}

 Docker下的Elastic search

 

2. 获取

① 索引文档字段类型

GET /索引名称

Docker下的Elastic search

 

② 指定的文档数据

GET /索引名称/_doc/文档id

③ 所有文档数据

POST /索引名称/_doc/_search

④ 简单条件查询

GET /索引名称/_doc/_search?q=字段名:字段值

⑤ 扩展命令

获取es当前信息(版本、健康值等):GET _cat/

 Docker下的Elastic search

 

3. 修改:

① PUT(不推荐),需要写全所有字段

PUT /索引名称/_doc/文档id

{请求体}

 Docker下的Elastic search

 

② POST(推荐!!!)

POST /索引名称/_doc/文档id/_update

{请求体}

Docker下的Elastic search

 

 

4. 删除:

① 删除索引:DELETE /索引名称

② 删除文档:DELETE /索引名称/_doc/文档id

 

(三)复杂查询

文档地址:(接口太多了,就不一一举例了)https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

 Docker下的Elastic search

Docker下的Elastic search

 

上一篇:leetcode [701. 二叉搜索树中的插入操作](https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/)


下一篇:41 搜索功能/1-搜索导航栏