version: "2.2"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
container_name: elk-es
restart: always
environment:
# 开启内存锁定
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# 指定单节点启动
- discovery.type=single-node
ulimits:
# 取消内存相关限制 用于开启内存锁定
memlock:
soft: -1
hard: -1
volumes:
- ./data/es/data:/usr/share/elasticsearch/data
- ./data/es/logs:/usr/share/elasticsearch/logs
- ./data/es/plugins:/usr/share/elasticsearch/plugins
- ./data/es/config/analysis-hanlp:/usr/share/elasticsearch/config/analysis-hanlp
- ./data/es/config/jvm.options:/usr/share/elasticsearch/config/jvm.options
ports:
- 9200:9200
记得要给 data 目录权限
运行命令,启动 docker
docker-compose up -d
安装 hanlp 分词器
推荐这个库 https://github.com/KennFalcon/elasticsearch-analysis-hanlp
在容器内运行
./bin/elasticsearch-plugin install https://github.com/KennFalcon/elasticsearch-analysis-hanlp/releases/download/v6.5.4/elasticsearch-analysis-hanlp-6.5.4.zip
此处的 hanlp 的版本要和 docker 中 es 的版本一致
安装分词模型这个库的作者认为一些模型不是所有人都需要,所以默认是不带 crf 和 nlp 模型的,需要去 github.com/hankcs/HanLP/releases 下载对应版本的数据包,需要注意版本
安装之后需要重启 docker 安装 crf 模型
先去下载对应的数据包,找到 data/model 中的 crf 文件夹,将此文件夹放入 data/es/plugins/analysis-hanlp/data/model 文件夹 注意一些问题:
1、本来的 plugin-security.policy 中的 FilePermission 会导致 es 报错,记得修改为
// HanLP data directories
//permission java.io.FilePermission "plugins/analysis-hanlp/data/-", "read,write,delete";
//permission java.io.FilePermission "plugins/analysis-hanlp/hanlp.cache", "read,write,delete";
permission java.io.FilePermission "<<ALL FILES>>", "read,write,delete";
2、hanlp 分词模型安装之后重启 docker,如果不做处理会报错说找不到 hanlp.properties 文件,解决方案就是在 dockerfile 提前将几个关键文件挂载出来
- ./data/es/config/analysis-hanlp:/usr/share/elasticsearch/config/analysis-hanlp
- ./data/es/config/jvm.options:/usr/share/elasticsearch/config/jvm.options