Docker部署ElasticSearch数据库+analysis-ik分词器插件

文章目录

一、部署ElasticSearch数据库

1、准备工作

bash 复制代码
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、创建配置文件

bash 复制代码
cat > ${Pwd}/config/elasticsearch.yml << EOF
cluster.name: "docker-cluster"
network.host: 0.0.0.0
EOF

3、运行容器

bash 复制代码
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 防止启动失败

bash 复制代码
docker exec -it elasticsearch sysctl -w vm.max_map_count=262144

二、添加分词器插件(analysis-ik)

1、首先在github下载指定版本的(和ES版本对应)analysis-ik分词器 analysis-ik下载地址

2、将下载包cp到容器内部 && 安装插件

bash 复制代码
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

bash 复制代码
docker restart elasticsearch

三、测试ElasticSearch数据库+analysis-ik分词器插件

为了方便测试我这里使用Postman工具进行测试:

1、测试ElasticSearch数据库

2、查看已经安装的插件

3、验证分词器功能是否正常

创建test索引

进行分词测试

使用服务器中的curl命令进行测试:

1、测试ElasticSearch数据库

json 复制代码
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、查看已经安装的插件

bash 复制代码
curl http://16.32.15.115:9200/_cat/plugins

es1 analysis-ik 7.17.6

3、验证分词器功能是否正常

创建test2索引

json 复制代码
curl -XPUT http://16.32.15.115:9200/test2/

{"acknowledged":true,"shards_acknowledged":true,"index":"test2"}

进行分词测试

json 复制代码
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数据处理。

返回内容:

bash 复制代码
{
  "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
    }
  ]
}
相关推荐
一个有温度的技术博主37 分钟前
Redis缓存预热:解决服务冷启动的“数据库杀手”问题
数据库·redis·缓存
沃尔威武8 小时前
数据库 Sinks(.net8)
数据库·.net·webview
问简8 小时前
docker 镜像相关
运维·docker·容器
Dreamboat¿9 小时前
SQL 注入漏洞
数据库·sql
Benszen9 小时前
Docker容器化技术实战指南
运维·docker·容器
曹牧10 小时前
Oracle数据库中,将JSON字符串转换为多行数据
数据库·oracle·json
被摘下的星星10 小时前
MySQL count()函数的用法
数据库·mysql
Hommy8810 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
末央&10 小时前
【天机论坛】项目环境搭建和数据库设计
java·数据库
徒 花10 小时前
数据库知识复习07
数据库·作业