Docker装置ElasticSearch和Elasticsearch-Head以及IK分词器

ElasticSearch 是一个分布式、高扩展、高实时的查找引擎。它能很便利的使很多数据具有查找、剖析和探究的才能。充分利用ElasticSearch的水平伸缩性,能使数据在出产环境变得更有价值。ElasticSearch 的完成原理首要分为以下几个过程,首要用户将数据提交到Elastic Search 数据库中,再经过分词控制器去将对应的句子分词,将其权重和分词成果同时存入数据,当用户查找数据时分,再依据权重将成果排名,打分,再将回来成果呈现给用户,本文介绍假如经过Docker进行装置Elasticsearch单节点和集

一、装置单节点Elasticsearch

1、拉取Elasticsearch

docker pull elasticsearch:6.8.7

2、创立数据卷

首要用于将容器内的数据和宿主机进行挂载,防止容器重启和挂掉的时分数据丢掉

  • 创立目录
# -p是创立多级目录
mkdir -p /data/es
  • 进入刚刚创立的es目录,创立数据寄存目录和日志寄存目录
# 进入目录
cd /data/es
# 创立数据目录和日志目录
mkdir data log
# 这两个目录的用户权限要与发动es的用户相同,不然会呈现没有权限读取,这儿为了便利直接给敞开最大权限
chmod 777 data log
  • 创立装备文件
vim es.yml
  • 文件中参加以下内容
cluster.name: elasticsearch-cluster
node.name: es-node
http.port: 9200
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"

3、发动

docker run -d --name es -p 9200:9200 -p 9300:9300 --restart always -v /data/es/data/:/usr/share/elasticsearch/data -v /data/es/log/:/usr/share/elasticsearch/logs -v /data/es/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -e "discovery.type=single-node" elasticsearch:6.8.7
  • 最终经过浏览器测验是否发动成功

4、装置IK分词器

Elasticsearch分词器,对中文分词不是太友爱。这儿咱们能够下载开源的IK分词器

  • 进入es容器
docker exec -it es bash
  • 进入plugin目录并装置分词器
# 进入目录
cd plugins/
# 装置分词器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.7/elasticsearch-analysis-ik-6.8.7.zip

5、装置Elasticsearch-Head

供给了操作Elasticsearch的界面

  • 拉取镜像
docker pull mobz/elasticsearch-head:5
  • 运转
docker run -d -p --name eshead 9100:9100 docker.io/mobz/elasticsearch-head:5

最终经过浏览器翻开,并进行衔接测验是否衔接成功,这时分对ES集群进行操作时会呈现406反常,需求咱们去装备下

# 进入head容器
docker exec -it eshead bash
# 修改装备文件,假如没有vim指令自行装置vim
vim _site/vendor.js
# 在未修改的形式下运用以下指令查询
/contentType
输入i敞开修改形式,application/x-www-form-urlencoded 改为 application/json;charset=UTF-8
# 按键盘的ESC健退出修改形式,然后查询下一个
/var inspectData = s.contentType
输入i敞开修改形式,将application/x-www-form-urlencoded 改为 application/json;charset=UTF-8
# 输入wq保存并退出,最终退出容器并重启容器
exit
docker restart eshead

到此就装置好单节点的Elasticsearch啦,但是有个当地要注意,ES的版别号必定要和分词器的版别对应

二、装置集群版的Elasticsearch

这儿只介绍怎么装置集群,不再介绍装置分词器等。。

1、创立装备文件

这儿仍是连续装置单节点,在/data/es目录中创立,假如服务器没有该目录就自行创立

vim es.yml

参加以下内容

cluster.name: elasticsearch-cluster
node.name: es-node1
network.host: 0.0.0.0
network.publish_host: 192.168.1.97
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.1.97:9300","192.168.1.98:9300"]
discovery.zen.minimum_master_nodes: 2
  • 在第二台服务器也创立该装备文件并参加以下内容
cluster.name: elasticsearch-cluster
node.name: es-node2
network.host: 0.0.0.0
network.publish_host: 192.168.1.98
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.1.98:9300","192.168.1.97:9300"]
discovery.zen.minimum_master_nodes: 2

以下为装备的描绘

装备 描绘
cluster.name 用于仅有标识一个集群,不同的集群,其 cluster.name 不同,集群姓名相同的一切节点主动组成一个集群
node.name 节点名,默许随机指定一个name列表中姓名。一个集群中node姓名不能重复
network.host 答应拜访的IP,默许为0.0.0.0
network.publish_host 设置其它结点和该结点交互的ip地址,假如不设置它会主动判别,值有必要是个实在的ip地址
http.port 设置对外服务的http端口,默许为9200
transport.tcp.port 设置节点之间交互的tcp端口,默许是9300
http.cors.enabled 是否答应跨域
http.cors.allow-origin 答应的域名,*表明一切
node.master 该结点是否有资历被选举为主结点(候选主结点),用于处理请求和办理集群。假如结点没有资历成为主结点,那么该结点永久不可能成为主结点;假如结点有资历成为主结点,只要在被其他候选主结点认可和被选举为主结点之后,才真实成为主结点
node.data 装备该结点是数据结点,用于保存数据,履行数据相关的操作
discovery.zen.ping.unicast.hosts 集群中节点的IP地址
discovery.zen.minimum_master_nodes 主动发现master节点的最小数,假如这个集群中装备进来的master节点少于这个数目,es的日志会一向报master节点数目缺乏,甚至会呈现主备切换时误以为有两个激活的master节点。最好为主节点总数 / 2 + 1,默许1

2、运转

别离运转两台服务器中的Elasticsearch,这儿不在介绍拉取镜像

docker run -d --name es -p 9200:9200 -p 9300:9300 --restart always -v /data/es/data/:/usr/share/elasticsearch/data -v /data/es/log/:/usr/share/elasticsearch/logs -v /data/es/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:6.8.7

这儿的指令比装置单节点少了个环境变量-e "discovery.type=single-node ",运转成功后经过head去测验下衔接,假如都衔接成功的话就算是成功啦,假如失利,就自己去看看哪里装备错了哦


本文到此就完毕咯,有任何疑问欢迎在谈论区宣布