最近在学习 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
解释一下,前三行是开启远程访问和跨域,最后一行是开启密码访问
创建数据挂载目录
在宿创建容器的挂载目录,我的目录如下
/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 大小,参见
安装 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-head 已经停止更新了,有坑,快跑。
最后再 bb 一句,es-client 也有坑,查询请用 post,因为 get 方式没法携带请求 body