前言
最近在学习 ES,所以需要在服务器上装一个单节点的 ES
服务器环境:CentOS 7.9
安装
下载镜像
目前最新版本是 8.12.2
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.12.2
创建配置
新增配置文件 elasticsearch.yml
http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" xpack.security.enabled: true
解释一下,前三行是开启远程访问和跨域,最后一行是开启密码访问
Networking | Elasticsearch Guide [8.12] | Elastic
创建数据挂载目录
在宿主机创建容器的挂载目录,我的目录如下
/home/elasticsearch
├── config
│ ├── analysis-ik
│ └── elasticsearch.yml
├── data
└── plugins
上一节说的配置文件 elasticsearch. yml 放在 /home/elasticsearch/config/elasticsearch. yml
创建 config/analysis-ik 、data、plugins 目录
这里需要重点说下 analysis-ik 文件夹,这是用来存放 ik 分词器的配置文件的目录,里面的文件由容器创建,所以需要分配与容器相同的权限(相同的用户)
不知道怎么弄的看以下步骤
# 启动临时的Docker容器 docker run --name es01 -e "discovery.type=single-node" -t docker.elastic.co/elasticsearch/elasticsearch:8.12.2 # 查看用户 ps -ef | grep elasticsearch # 查看用户id id 用户名 # 删除临时的docker容器 docker kill es01 && docker rm es01 # 修改文件夹权限(uid就是用户id,自行替换) sudo chown -R uid:uid /home/elasticsearch/config/analysis-ik
启动 docker 容器
docker run --privileged=true --name elasticsearch \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /home/elasticsearch/config/analysis-ik:/usr/share/elasticsearch/config/analysis-ik \ -v /home/elasticsearch/data:/usr/share/elasticsearch/data \ -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d docker.elastic.co/elasticsearch/elasticsearch:8.12.2
-e ES_JAVA_OPTS="-Xms 64 m -Xmx 128 m" 是指定 jvm 大小,参见 Manually set the heap size
安装 ik 分词器
# 进入docker容器 docker exec -it elasticsearch /bin/bash # 安装ik分词器(此命令要在容器内执行) ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.12.2/elasticsearch-analysis-ik-8.12.2.zip
如果安装 ik 分词器时报错并且出现 Permission denied 字样,那就是 analysis-ik 文件夹的权限没有配置正确。
安装完成之后别急着退出容器,往下看
初始化密码
# 此命令要在容器内执行 ./bin/elasticsearch-setup-passwords interactive
设置 ik 分词器自定义用户词典
修改 /home/elasticsearch/config/analysis-ik/IKAnalyzer.cfg.xml 文件
IK Analyzer 扩展配置 custom/mydict.dic;custom/single_word_low_freq.dic custom/ext_stopword.dic location http://xxx.com/xxx.dic
例如 custom/mydict.dic,那么文件就存放在 /home/elasticsearch/config/analysis-ik/custom/mydict. dic
记得分配读写权限,不然容器没法去读取
总结
本文介绍了 elasticsearch 8.12.2 的安装和 ik 分词器的安装。最后推荐一个连接 ES 的工具 es-client
es-head 已经停止更新了,有坑,快跑。
最后再 bb 一句,es-client 也有坑,查询请用 POST,因为 GET 方式没法携带请求 body
参考资料
史上最详细Docker安装Elasticsearch、ik分词器、可视化工具,每一步都带有步骤图!!!
神坑:ElasticSearch8集群启动报错“Device or resource busy”(Docker方式)_/usr/share/elasticsearch/config/elasticsearch.yml