部署ElasticSearch

创建网络

:::tips 因为还需要部署Kibana容器,因此需要让ES和Kibana容器互联,先创建一个虚拟网络 :::

  1. docker network create es-net

拉取镜像

  1. dockerspull elasticsearch:7.12.1

创建并运行容器

  1. docker run -d \
  2. --name es \
  3. -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
  4. -e "discovery.type=single-node" \
  5. -v es-data:/usr/share/elasticsearch/data \
  6. -v es-plugins:/usr/share/elasticsearch/plugins \
  7. --privileged \
  8. --network es-net \
  9. -p 9200:9200 \
  10. -p 9300:9300 \
  11. elasticsearch:7.12.1
  12. 说明:
  13. -d #设置容器后台运行
  14. --name es #设置容器名为es
  15. -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置容器的内存
  16. -e "discovery.type=single-node" #设置es单节点运行
  17. -v es-data:/usr/share/elasticsearch/data #挂载es数据到数据卷
  18. -v es-plugins:/usr/share/elasticsearch/plugins #挂载es插件目录到数据卷
  19. --privileged #授予逻辑卷访问权
  20. --network es-net #加入刚刚设置的网络中
  21. -p 9200:9200 #单点服务访问的端口映射
  22. -p 9300:9300 #集群服务访问的端口映射

访问服务

:::tips 访问以下地址即可看到ElasticSearch的响应结果

  • http://IP地址:9200 :::

    部署Kibana

    :::tips Kibana可以连接ElasticSearch,并提供了可视化界面便于学习 :::

    拉取镜像

    1. docker pull kibana:7.12.1

    创建并运行容器

    ```bash docker run -d \ —name kibana \ -e ELASTICSEARCH_HOSTS=http://es:9200 \ —network es-net \ -p 5601:5601 \ kibana:7.12.1

说明: -d #设置容器后台运行 —name kibana #设置容器名 -e ELASTICSEARCH_HOSTS=http://es:9200 #设置Kibana需要连接的es地址,IP可以使用容器名代替:es —network es-net #加入刚刚设置的网络中 -p 5601:5601 #配置Kibana映射的容器端口

  1. <a name="JnygV"></a>
  2. ### 访问服务
  3. :::tips
  4. 访问以下地址即可访问Kibana服务
  5. - http://IP地址:5601
  6. 进入DevTools界面,即可通过命令操作ElasticSearch中的索引和文档
  7. :::
  8. <a name="Mtzeq"></a>
  9. # 安装IK分词器
  10. <a name="yFWoW"></a>
  11. ### 进入ElasticSearch容器
  12. ```bash
  13. docker exec -it es /bin/bash

在线下载并安装IK分词器

  1. ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

退出容器

  1. exit

重启容器

  1. docker restart es

使用

:::tips IK分词器分为两种模式:

  • ik_smart:最少切分
  • ik_max_word:最细切分 :::

    1. GET /_analyze
    2. {
    3. "analyzer": "ik_smart",
    4. "text": "这是一段测试文字"
    5. }
    1. GET /_analyze
    2. {
    3. "analyzer": "ik_max_word",
    4. "text": "这是一段测试文字"
    5. }

    IK添加扩展词词典

    :::tips 想要添加自定义扩展词词汇,就需要先进入IK分词器的安装目录 :::

    查看数据卷

    1. docker volume inspect es-plugins

    进入config目录

    :::tips 进入刚刚查询的目录,然后进入IK分词器的config目录 :::

    新建文件

    1. vi ext.dic

    :::tips 然后根据需求在文件中添加需要的扩展词词汇,换行进行分隔 :::

    添加扩展词配置

    :::tips 编辑IKAnalyzer.cfg.xml文件,然后添加扩展词文件名到标签中 :::

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    3. <properties>
    4. <comment>IK Analyzer 扩展配置</comment>
    5. <!--用户可以在这里配置自己的扩展字典 *** 添加扩展词典-->
    6. <entry key="ext_dict">ext.dic</entry>
    7. </properties>

    重启es容器

    :::tips 重启es容器后自定义扩展词即可生效 :::

    1. docker restart es

    IK添加停用词词典

    :::tips 想要添加自定义停用词词汇,就需要先进入IK分词器的安装目录 :::

    查看数据卷

    1. docker volume inspect es-plugins

    进入config目录

    :::tips 进入刚刚查询的目录,然后进入IK分词器的config目录 :::

    新建文件

    1. vi stopword.dic

    :::tips 然后根据需求在文件中添加需要的停用词词汇,换行进行分隔 :::

    添加扩展词配置

    :::tips 编辑IKAnalyzer.cfg.xml文件,然后添加停用词文件名到标签中 :::

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    3. <properties>
    4. <comment>IK Analyzer 扩展配置</comment>
    5. <!--用户可以在这里配置自己的扩展字典-->
    6. <entry key="ext_dict">ext.dic</entry>
    7. <!--用户可以在这里配置自己的扩展停止词字典 *** 添加停用词词典-->
    8. <entry key="ext_stopwords">stopword.dic</entry>
    9. </properties>

    重启es容器

    :::tips 重启es容器后自定义停用词即可生效 :::

    1. docker restart es