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
    }
  ]
}
相关推荐
SelectDB3 分钟前
慢 SQL 诊断准确率 99.99%,天翼云基于 Apache Doris MCP 的 AI 智能运维实践
数据库·人工智能·apache
JIngJaneIL4 分钟前
基于java+ vue交友系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·交友
数据知道38 分钟前
为什么要用向量数据库?常用的向量数据库有哪些以及如何选择?
数据库·向量数据库
dixiuapp1 小时前
设备维修记录系统,从数据沉淀到价值挖掘的跃迁
大数据·数据库·人工智能
qq_455760851 小时前
docker - 网络
运维·docker·容器
问道飞鱼1 小时前
【数据库知识】MySQL 多表关联高效实现指南:场景化方案与底层原理
数据库·mysql·多表关联
马克学长1 小时前
SSM校园二手交易平台7fut7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·校园闲置资源交易
dblens 数据库管理和开发工具1 小时前
MySQL :5.7与8.0版创建用户与授权、密码认证插件、角色、密码过期策略
数据库·mysql·dblens·mysql创建用户·mysql设置密码·mysql用户授权
曹牧2 小时前
Oracle:字段为值列表
数据库·oracle
亮子AI2 小时前
【Prisma】如何修复(重建)已经损坏的迁移历史?
数据库·prisma