版本:
CentOS 8
ElasticSearch 7.9.2
Docker 19.03.13
修改docker-compose:
首先是原始的docker-compose.yml
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /mnt/docker/es_docker/es_data_01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /mnt/docker/es_docker/es_data_02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /mnt/docker/es_docker/es_data_03:/usr/share/elasticsearch/data
networks:
- elastic
networks:
elastic:
driver: bridge
下面是修改后的docker-compose.yml,增加了对plugins文件的挂载。
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /mnt/docker/es_docker/es_data_01:/usr/share/elasticsearch/data
- /mnt/docker/es_docker/plugins:/usr/share/elasticsearch/plugins
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /mnt/docker/es_docker/es_data_02:/usr/share/elasticsearch/data
- /mnt/docker/es_docker/plugins:/usr/share/elasticsearch/plugins
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /mnt/docker/es_docker/es_data_03:/usr/share/elasticsearch/data
- /mnt/docker/es_docker/plugins:/usr/share/elasticsearch/plugins
networks:
- elastic
networks:
elastic:
driver: bridge
安装IK插件:
进入任一容器内下载插件:
docker exec -it es01 /bin/bash
下载插件:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.2/elasticsearch-analysis-ik-7.9.2.zip
安装完以后需要看一下安装路径下的文件,看是否有config路径,如果没有,还是需要手动把压缩包的文件安装进来,否则在后续操作新增文档时可能报错。
注意IK版本必须和ES版本相同,否则会报错。
同时,最新版本的ES可能还没有对应版本的IK,所以建议用次新版本的ES,否则插件更新速度可能跟不上。
重启之后就生效了。
当浏览器输入地址:
http://192.168.56.200:9200/_cat/plugins 看到下面插件详情就说明安装成功了。
验证插件功能:
curl -X GET -H "Content-Type: application/json" "http://192.168.56.200:9200/_analyze?pretty=true" -d'{"text":"中华五千年华夏","analyzer": "ik_smart"}'
可以得到
{
"tokens" : [
{
"token" : "中华",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "五千年",
"start_offset" : 2,
"end_offset" : 5,
"type" : "TYPE_CQUAN",
"position" : 1
},
{
"token" : "华夏",
"start_offset" : 5,
"end_offset" : 7,
"type" : "CN_WORD",
"position" : 2
}
]
}