Docker(十)-Docker运行elasticsearch7.4.2容器实例以及分词器相关的配置

1.下载镜像

1.1存储和检索数据
复制代码
docker pull elasticsearch:7.4.2  
1.2可视化检索数据
复制代码
docker pull kibana:7.4.2

2.创建elasticsearch实例

复制代码
创建本地挂载数据卷配置目录
mkdir -p /software/elasticsearch/config  
创建本地挂载数据卷数据目录
mkdir -p /software/elasticsearch/data
写入远程任何机器访问配置
echo "http.host: 0.0.0.0" >> /software/elasticsearch/config/elasticsearch.yml

9200 发送http请求端口
9300 es分布式集群状态下节点通信端口
"discovery.type=single-node"  单节点模式运行
ES_JAVA_OPTS="-Xms64m-Xmx256m" 指定es运行最小,最大内存   

chmod -R 777 /software/elasticsearch/ 设置权限
未设置权限:"Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes"

docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx256m" -v /software/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /software/elasticsearch/data:/usr/share/elasticsearch/data -v /software/elasticsearch/plugins:/usr/share/elasticsearch/plugins   --name=elasticsearch7.4.2 elasticsearch:7.4.2	


3.创建Kibana实例

复制代码
ELASTICSEARCH_HOSTS  指定ES主机地址
docker run -d -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://192.168.179.101:9200 --name=kibana7.4.2 kibana:7.4.2


4.安装分词器插件

1.解压
复制代码
elasticsearch-analysis-ik 7.4.2版本(与ES版本一致)
将下载的分词器压缩包 解压到 本地挂载数据卷插件目录,解压完成后会同步到docker elasticsearch容器/usr/share/elasticsearch/plugins插件目录下
2.进入elasticsearch容器内部查看是否已同步
复制代码
docker exec -it elasticsearch7.4.2 /bin/bash
3.更改ik目录权限
复制代码
chmod -R 777 ik/
4.验证ik分词器是否安装好
复制代码
进入elasticsearch bin目录执行elasticsearch-plugin list(列出安装好的ES插件)
5.重启ES容器实例
6.kibana中使用ik分词器
复制代码
POST _analyze
{
  "analyzer": "ik_smart",
  "text": "I人的项目"
}

I人是一组词,但未识别,所以需要自定义扩展一些分词
{
  "tokens" : [
    {
      "token" : "i",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "ENGLISH",
      "position" : 0
    },
    {
      "token" : "人",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "CN_CHAR",
      "position" : 1
    },
    {
      "token" : "的",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "CN_CHAR",
      "position" : 2
    },
    {
      "token" : "项目",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 3
    }
  ]
}
7.自定义扩展分词(通过nginx)
7.1 nginx中添加分词库(fenci.txt)
复制代码
docker运行nginx容器实例可参考:https://blog.csdn.net/Java_Scholar0/article/details/140708367

将拓展的分词库放在nginx中,让ik分词器给nginx发请求,获取拓展的词库。

html文件夹下创建es文件夹并在其内创建fenci.txt文本,把拓展的分词加入到fenci.txt文本中
复制代码
访问fenci.txt资源
http://192.168.179.101/es/fenci.txt
7.2配置ik分词器远程扩展分词地址
复制代码
修改ik分词器配置文件
/software/elasticsearch/plugins/ik/config
复制代码
将nginx中添加的分词库地址填写进去
7.3 重启ES容器
复制代码
docker restart elasticsearch7.4.2
7.4 测试自定义扩展分词
复制代码
POST _analyze
{
  "analyzer": "ik_smart",
  "text": "I人的项目"
}

发现I人没有被分割,则配置成功

{
  "tokens" : [
    {
      "token" : "i人",
      "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" : 5,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}
相关推荐
AC赳赳老秦1 小时前
Kubernetes 与 DeepSeek:高效 Pod 部署配置与资源调度优化指南
人工智能·云原生·容器·kubernetes·自动化·notepad++·deepseek
阿方索2 小时前
Kubernetes Pod 管理
云原生·容器·kubernetes
哪里不会点哪里.3 小时前
Docker
运维·docker·容器
汪碧康3 小时前
一文掌握k8s的健康检查探针
云原生·容器·kubernetes·k8s·xkube·k8s管理平台
七七powerful3 小时前
docker 搭建wtsap代理
运维·docker·容器
Shanxun Liao3 小时前
Docker vlmcsd 完整管理指南
运维·docker·容器
有谁看见我的剑了?4 小时前
K8s crictl 客户端学习
学习·容器·kubernetes
怒放de生命20105 小时前
前端子包+docker流水线部署+nginx代理部署
前端·nginx·docker
KubeSphere 云原生5 小时前
云原生周刊:Kubernetes 1.35 新机制与云原生生态更新
云原生·容器·kubernetes
Java程序员威哥5 小时前
云原生Java应用优化实战:资源限制+JVM参数调优,容器启动快50%
java·开发语言·jvm·python·docker·云原生