文章目录
- 一、部署ElasticSearch数据库
- 二、添加分词器插件(analysis-ik)
- 三、测试ElasticSearch数据库+analysis-ik分词器插件
一、部署ElasticSearch数据库
1、准备工作
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.6
Pwd="/data/software/elasticsearch/"
mkdir ${Pwd}/{data,plugins,config,logs} -p
chmod -R 777 ${Pwd}
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
2、创建配置文件
cat > ${Pwd}/config/elasticsearch.yml << EOF
cluster.name: "docker-cluster"
network.host: 0.0.0.0
EOF
3、运行容器
docker run -itd --name elasticsearch \-v ${Pwd}/data:/usr/share/elasticsearch/data \-v ${Pwd}/plugins:/usr/share/elasticsearch/plugins \-v ${Pwd}/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v ${Pwd}/logs:/usr/share/elasticsearch/logs \-v /etc/localtime:/etc/localtime \-v /etc/sysctl.conf:/etc/sysctl.conf \-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \-e "node.name=es1" \-e "discovery.seed_hosts=es1" \-e "cluster.initial_master_nodes=es1" \-e "http.host=0.0.0.0" \-p 9200:9200 \-p 9300:9300 \--privileged \--restart=always \docker.elastic.co/elasticsearch/elasticsearch:7.17.6
4、设置vm.max_map_count
防止启动失败
docker exec -it elasticsearch sysctl -w vm.max_map_count=262144
二、添加分词器插件(analysis-ik)
1、首先在github下载指定版本的(和ES版本对应)analysis-ik分词器 analysis-ik下载地址
2、将下载包cp到容器内部 && 安装插件
docker cp elasticsearch-analysis-ik-7.17.6.zip elasticsearch:/tmp
docker exec -it elasticsearch /bin/bash
cd bin
./elasticsearch-plugin install file:///tmp/elasticsearch-analysis-ik-7.17.6.zip -> Installing file:///tmp/elasticsearch-analysis-ik-7.17.6.zip
-> Downloading file:///tmp/elasticsearch-analysis-ik-7.17.6.zip
[=================================================] 100%??
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.net.SocketPermission * connect,resolve
See https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.Continue with installation? [y/N]y # 输入Y
-> Installed analysis-ik
-> Please restart Elasticsearch to activate any plugins installed
3、安装完成后重启elasticsearch
docker restart elasticsearch
三、测试ElasticSearch数据库+analysis-ik分词器插件
为了方便测试我这里使用Postman
工具进行测试:
1、测试ElasticSearch数据库
2、查看已经安装的插件
3、验证分词器功能是否正常
创建test索引
进行分词测试
使用服务器中的curl命令进行测试:
1、测试ElasticSearch数据库
curl http://16.32.15.115:9200{"name" : "es1","cluster_name" : "docker-cluster","cluster_uuid" : "dC8v3zOoQgGWqgt0smdKtw","version" : {"number" : "7.17.6","build_flavor" : "default","build_type" : "docker","build_hash" : "f65e9d338dc1d07b642e14a27f338990148ee5b6","build_date" : "2022-08-23T11:08:48.893373482Z","build_snapshot" : false,"lucene_version" : "8.11.1","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}
2、查看已经安装的插件
curl http://16.32.15.115:9200/_cat/pluginses1 analysis-ik 7.17.6
3、验证分词器功能是否正常
创建test2索引
curl -XPUT http://16.32.15.115:9200/test2/{"acknowledged":true,"shards_acknowledged":true,"index":"test2"}
进行分词测试
curl -X POST -H "Content-Type: application/json" -d '{"analyzer": "ik_smart","text": "社会你腾哥,人狠话不多!!!"
}' http://16.32.15.115:9200/test2/_analyze --silent | jq
注意:为了显示返回json数据我添加了 --silent | jq
参数,此参数需要安装jq命令,如果没有去掉参数就行。
- –silent参数:用于禁止显示进度条和错误信息:
- | jq命令:将curl返回的结果通过管道符号传递给jq命令进行JSON数据处理。
返回内容:
{"tokens": [{"token": "社会","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0},{"token": "你","start_offset": 2,"end_offset": 3,"type": "CN_CHAR","position": 1},{"token": "腾","start_offset": 3,"end_offset": 4,"type": "CN_CHAR","position": 2},{"token": "哥","start_offset": 4,"end_offset": 5,"type": "CN_CHAR","position": 3},{"token": "人","start_offset": 6,"end_offset": 7,"type": "CN_CHAR","position": 4},{"token": "狠","start_offset": 7,"end_offset": 8,"type": "CN_CHAR","position": 5},{"token": "话","start_offset": 8,"end_offset": 9,"type": "CN_CHAR","position": 6},{"token": "不多","start_offset": 9,"end_offset": 11,"type": "CN_WORD","position": 7}]
}