docker-compose安装ES集群以及kibanna并配置账号密码,添加ik分词器

配置文件

在同一个目录下新建配置文件
vim docker-compose.yml

挂载的目录记得提前建好

version: '3'
networks:
  es-net:
    external: true
services:
 kibana:
  image: kibana:7.17.4
  restart: always  
  container_name: kibana
  environment:
    - XPACK_GRAPH_ENABLED=true
    - TIMELION_ENABLED=true
  volumes:
    - ./kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
  networks:
    - es-net
  ports:
    - '15602:5601' 

 elasticsearch1:
  image: elasticsearch:7.17.4
  restart: always  
  container_name: es-master
  volumes:
    - ./data/master:/usr/share/elasticsearch/data
    # 后面挂载分词器的目录
    - ./plugins:/usr/share/elasticsearch/plugins
    - ./elasticsearch_master.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    # 这个是把生成的证书挂载到es节点容器内,后面配置密码时会用到,es集群不需要配置密码的可以删除
    # 这个账号密码的映射需要在配置好账号密码,并且把.p12文件从容器中复制出来了,再进行映射,刚开始先注释
    # 不然映射会自动创建好名为elastic-certificates.p12的文件,在配置时就会报错,导致容器一直重启
    - ./config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
  networks:
    - es-net
  environment:
    - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  ports:
    - '19210:9200'
    - '19310:9300'
  privileged: true

 elasticsearch2:
  image: elasticsearch:7.17.4
  restart: always  
  container_name: es-slave1
  volumes:
    - ./data/slave1:/usr/share/elasticsearch/data
    - ./plugins:/usr/share/elasticsearch/plugins
    - ./elasticsearch_slave1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    - ./config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
  networks:
    - es-net
  environment:
    - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  ports:
    - '19220:9200'
    - '19320:9300'
  privileged: true

 elasticsearch3:
  image: elasticsearch:7.17.4
  restart: always
  container_name: es-slave2
  volumes:
    - ./data/slave2:/usr/share/elasticsearch/data
    - ./plugins:/usr/share/elasticsearch/plugins
    - ./elasticsearch_slave2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    - ./config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
  networks:
    - es-net
  environment:
    - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  ports:
    - '19230:9200'
    - '19330:9300'
  privileged: true

es-master服务器配置文件
vim elasticsearch_master.yml
discovery.seed_hosts直接填容器名,因为es的三个节点使用的是同一个network;

# 集群名称
cluster.name: es-cluster
# 节点名称
node.name: es-node-1
# 绑定host,0.0.0.0代表当前节点的ip
network.host: 0.0.0.0
# 表示这个节点是否可以充当主节点
node.master: true
# 是否充当数据节点
node.data: true
# 所有主从节点
discovery.seed_hosts: ["es-master", "es-slave1", "es-slave2"]
# 这个参数决定了在选主过程中需要 有多少个节点通信  预防脑裂 N/2+1
discovery.zen.minimum_master_nodes: 3
#初始化主节点
cluster.initial_master_nodes: es-node-1
# 单节点上可以开启的ES存储实例的个数,没配置的话会报一个错误
node.max_local_storage_nodes: 3

es-slave1服务器配置文件
vim elasticsearch_slave1.yml

cluster.name: es-cluster
node.name: es-node-2
network.host: 0.0.0.0
node.master: true
node.data: true
discovery.seed_hosts: ["es-master", "es-slave1", "es-slave2"]
discovery.zen.minimum_master_nodes: 3
cluster.initial_master_nodes: es-node-1
node.max_local_storage_nodes: 3

es-slave2服务器配置文件
vim elasticsearch_slave2.yml

cluster.name: es-cluster
node.name: es-node-3
network.host: 0.0.0.0
node.master: true
node.data: true
discovery.seed_hosts: ["es-master", "es-slave1", "es-slave2"]
discovery.zen.minimum_master_nodes: 3
cluster.initial_master_nodes: es-node-1
node.max_local_storage_nodes: 3

新建kibana文件夹
mkdir kibana
vim kibana/kibana.yml
elasticsearch.hosts要填宿主机ip加映射出来的端口

server.name: kibana
server.host: "0"
# 可以填容器名加端口,也可以用宿主机ip和映射的端口
elasticsearch.hosts: [ "http://es-master:9200/", "http://es-slave1:9200", "http://es-slave2:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: zh-CN
elasticsearch.username: "elastic"
elasticsearch.password: "66668888"
server.port: 5601

新建data文件夹
mkdir data
在data文件夹中建立如下三个文件夹


image.png

在docker-compose.yml文件所在的目录执行如下命令
docker-compose up -d --build
如果配置文件名不是docker-compose.yml,可使用
docker-compose -f 文件名 up -d

使用http://宿主机ip:port/_cat/nodes查看集群
正常情况如下图


image.png

访问kibana
http://宿主机ip:port/

PS:访问成功的话,es集群和kibana已经搭建完成了,假如不需要给ES集群配置密码的话

es集群、kibana配置用户密码

  1. 编辑每个节点的elasticsearch.yml
    加入如下配置:
# 开启x-pack功能,并指定证书位置
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
# 下面两个配置在生成elastic-certificates.p12文件时无需配置,会报错的,一样导致容器一直重启
# 在生成好elastic-certificates.p12文件后并且映射进容器了,再解开注释
xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
# 我这里报了一个找不到配置文件的错误
# 正常是下面这样的,由于是docker容器中配置,,所以写的是绝对路径
# xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
# xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

配置好了的话,就可以通过
docker exec -it es-master /bin/bash
这个命令进入容器开始生成证书
随便选择一个es节点进入即可
输入如下命令生成证书

./bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
# 根据提示输入y即可

执行完毕后即可在elasticsearch/config目录下看到名为elastic-certificates.p12的证书文件
记录下路径及文件名:
快捷键ctrl+D退出容器
我的路径是: /usr/share/elasticsearch/config/elastic-certificates.p12

这个路径即是配置文件中的路径
image.png

执行命令新建文件夹: mkdir config
通过docker命令把证书文件复制到config文件中,上面docker-compose.yml文件中已经做了挂载

docker cp es-master:/usr/share/elasticsearch/config/elastic-certificates.p12 ./config

确保配置文件的新内容已经重新挂载进入容器并且当前用户拥有执行权限再映射进所有容器中
chomd +x elastic-certificates.p12
重启es集群
如果发现新加配置文件内容没有进入容器中
docker ps 查看所有启动的容器
docker rm -f 容器名
重新运行 docker-compose up -d --build

重新进入es集群中一个容器
创建Elasticsearch集群密码
docker exec -it es-master /bin/bash
执行命令

./bin/elasticsearch-setup-passwords -h
image.png

自动创建密码

./bin/elasticsearch-setup-passwords auto
# 对应账号的密码会自动生成,一定要拷贝下来!!!!

手动创建密码

./bin/elasticsearch-setup-passwords interactive
# 先输入y
# 然后依次给es预设的账号设置密码
### ps:有七八个账号要设置,要么一一记录下来,要么设置成一样的

设置完成后,访问kibana或者es就需要账号密码了
测试下:
http://宿主机ip:port/_cat/nodes
输入账号:elastic
输入密码: ***********


image.png

访问成功

添加ik分词器

我这里是自己下载分词器并上传到服务器
分词器下载地址
版本很多,选择自己想要的,最好是和es相对应的版本
我是7.17.4
https://github.com/medcl/elasticsearch-analysis-ik/releases
把分词器上传到挂载目录plugins中

# 解压zip文件需要安装一个zip的工具
sudo apt-get install zip
# 解压并指定文件夹名称为ik
unzip elasticsearch-analysis-ik-7.17.4.zip -d ik
# 删除elasticsearch-analysis-ik-7.17.4.zip
rm -rf elasticsearch-analysis-ik-7.17.4.zip

添加自己的词库
词库是啥嘞,就是你在这个词库文件中加入词语;如:人们必须有信
当es在使用ik对这句话进行分词时"人们必须有信仰"
就会把"人们必须有信"做为一次单独的词

这是我用的开发人员通"用词库,下载下来可以直接使用
链接:https://pan.baidu.com/s/1Jr9LGjSTQQyK7gDscbeNTg
提取码:cmcc
把词库文件上传到plugins/ik/config/目录下
修改plugins/ik/config/IKAnalyzer.cfg.xml配置文件
红框中改为你的词库文件全称

image.png

确保生效,我把所有的容器删了重新编排了一次
docker rm -f es-master es-slave1 es-slave2
docker-compose up -d --build
测试默认分词器和ik分词器
下面的分词的粒度不同,自己去kibana上测试吧

GET _analyze
{
  "text": "d图像!"
}

GET _analyze
{
  "analyzer": "ik_smart", 
  "text": "d图像"
}

GET _analyze
{
  "analyzer": "ik_max_word", 
  "text": "d图像"
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容