一、 创建网络

创建虚拟网络,运行容器需要加入这个网络

docker network create es-net

二、拉取 es安装 ES

docker pull elasticsearch:8.17.10

三、运行 Docker 命令

切记版本号要对应❗❗❗

docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -e "xpack.security.enabled=false" -v es-data:/usr/share/elasticsearch/data -v es-plugins:/usr/share/elasticsearch/plugins --privileged --network es-net -p 9200:9200 -p 9300:9300 elasticsearch:8.17.10

测试,访问 http://ip:9200

四、安装Kibana

docker pulll kibana:8.17.10

五、运行 Kibana

切记版本号要对应❗❗❗

docker run -d  --name kibana  -e ELASTICSEARCH_HOSTS=http://es:9200  --network=es-net  -p 5601:5601   kibana:8.17.10

测试,http://ip:5601

到这里就可以正常使用了


扩展

下面这个图可以清晰的看到,默认的分词器对于中文并不是很好:

六、引入 IK 分词器

当需要处理中文分词时,一般都会使用 IK分词器

选择和自己版本对应的 ik 分词器

进入挂载目录将下载好的 zip 文件解压后放到挂在目录下,(我用的是 docker desktop)

docker cp D:\browserDownload\analysis-ik es:/usr/share/elasticsearch/plugins/

IK 分词器有两种分词模式

ik-smark 模式

ik-smark 模式下 IK 分词器会进行最少拆分,保证整体性

POST _analyze
{
  "analyzer": "ik_smart",
  "text": "Elasticsearch 是一个搜索引擎工具。"

分词结果

ik-max-word 模式

ik-max-word模式会将文本以最细粒度进行穷尽切分,分成尽可能多的词语。

POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "Elasticsearch 是一个搜索引擎工具。"
}

分词结果:

优化 IK 分词

其实 IK 分词器到这里还有一点点的小问题,就是目前的 IK 分词器无法正确的划分网络名词,所以这个时候就需要我们手动去设置,在 IK 分词器目录中的config目录中的IkAnalyzer.cfg.xml

ext.dic 内容如下:

stopwords.dic内容如下:

保存退出,重启 es

验证:

POST _analyze
{
  "analyzer": "ik_smart",
  "text": "小孩哥觉得我city不city呀"
}

结果:

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐