• docker安装配置elasticsearch,kibana和IK分词器


    前置安装docker

    可参考:Debian安装docker
    Centos安装docker

    创建docker网络

    (docker-compose可以直接互连)
    因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:

    docker network create es-net
    
    • 1

    安装Elasticsearch

    Elasticsearchkibana版本要一致

    #版本要一致
    docker pull elasticsearch:7.12.1
    docker pull kibana:7.12.1
    # 宿主机挂载目录
    mkdir -p /docker/elasticsearch/data
    mkdir -p /docker/elasticsearch/plugins
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行elasticsearch

    这里默认内存是1g,最好不要少于512m
    #运行es7
    docker run -d \
    	--name es7 \
        -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
        -e "discovery.type=single-node" \
        -v es-data:/docker/elasticsearch/data \
        -v es-plugins:/docker/elasticsearch/plugins \
        --privileged \
        --network es-net \
        -p 9200:9200 \
        -p 9300:9300 \
    elasticsearch:7.12.1
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    检查是否成功 http://ip:9200/

    命令解释:

    • -e "cluster.name=es-docker-cluster":设置集群名称
    • -e "http.host=0.0.0.0":监听的地址,可以外网访问
    • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
    • -e "discovery.type=single-node":非集群模式
    • -v es-data:/docker/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
    • -v es-logs:/docker/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
    • -v es-plugins:/docker/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
    • --privileged:授予逻辑卷访问权
    • --network es-net :加入一个名为es-net的网络中
    • -p 9200:9200:端口映射配置

    安装Kibana

    kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习。

    运行kibana

    #运行kibana
    docker run -d \
    --name kibana \
    -e ELASTICSEARCH_HOSTS=http://es7:9200 \
    --network=es-net \
    -p 5601:5601  \
    kibana:7.12.1
    
    
    #检验
    http://ip:5601/
    
    左侧Devtools中可以快速编写DSL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
    • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
    • -p 5601:5601:端口映射配置

    kibana启动一般比较慢,需要多等待一会,可以通过命令:

    docker logs -f kibana
    
    • 1

    查看运行日志,当查看到下面的日志,说明成功:

    在这里插入图片描述

    此时,在浏览器输入地址访问:http://ip:5601,即可看到结果

    DevTools

    kibana中提供了一个DevTools界面:
    在这里插入图片描述
    在这里插入图片描述

    这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。

    安装IK分词器插件

    原有默认的分词器对中文分词并不友好
    可以使用IK分词器

    #### 安装IK分词器插件
    # 进入容器内部
    docker exec -it es7 /bin/bash
    
    # 在线下载并安装
    ./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
    
    # 等待下载安装完成
    
    #退出
    exit
    #重启容器
    docker restart es7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    IK分词器包含两种模式:

    • ik_smart:最少切分

    • ik_max_word:最细切分
      在这里插入图片描述

    配置IK分词器字典

    es使用通过词来分,但终究别人定义的词,我们可以自定义一些词典

    # 可以进入修改字典
    docker exec -it es7 /bin/bash
    # 字典目录
    cd /usr/share/elasticsearch/config/analysis-ik
    # 修改配置文件
    vi IKAnalyzer.cfg.xml
    # :wq
    
    # 退回到宿主机
    exit
    
    # 重启es和kibana
    docker restart es7
    docker restart kibana
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    IKAnalyzer.cfg.xml中可以配置

    
    <properties>
            <comment>IK Analyzer 扩展配置comment>
            
            <entry key="ext_dict">entry>
             
            <entry key="ext_stopwords">entry>
            
            <entry key="remote_ext_dict">http://113.131.57.206:7090/remote.txtentry>
            
            
    properties>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    上面两个是本地的额外字典额外禁止词位置,可以自己添加xml文件同目录的文件如,xxx.dic

    下面两个是远程的

    推荐配置IK远程热更新字典

    每次都要进入容器内部修改很麻烦, 而且vi编写也麻烦, 可以通过远程字典来热更新词典

    创建配置字典位置

    先在宿主机的目录创建字典文件

    ## 宿主机的目录
    cd /docker/elasticsearch/IK/
    
    ## 创建字典文件
    touch remote.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建完后, 可以通过MobaXterm等远程连接工具, 然后用VSCode打开编辑
    remote.txt
    在这里插入图片描述
    在这里插入图片描述

    nginx配置转发到字典位置

    安装nginx可以参考这里的unbuntu安装nginx部分(Debian也可以用)
    通过apt-get安装的nginx的目录

    #安装好的nginx相关文件位置:
    
        /usr/sbin/nginx:主程序
    
        /etc/nginx:存放配置文件
    
        /usr/share/nginx:存放静态文件
    
        /var/log/nginx:存放日志
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    修改nginx配置

    cd /etc/nginx
    
    # 修改conf.d目录下的,没有可以自己创建一个
    # 主配置已经默认引入这目录下所有配置文件
    cd /conf.d
    # 创建
    touch http.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    http.conf加入以下内容:

    # 根据约定,URL 尾部的 / 表示目录,没有 / 表示文件。所以访问 /some-dir/ 时,服务器会自动去该目录下找对应的默认文件。
    # 如果访问 /some-dir 的话,服务器会先去找 some-dir 文件,找不到的话会将 some-dir 当成目录,重定向到 /some-dir/
    
    # 每次更改后重启nginx
    # cd /usr/sbin
    # ./nginx -s reload
    
        server {
            listen       7090;
            server_name  localhost;
            server_name  113.131.57.206; #你的ip
    
            
            charset 'utf-8';
            default_type 'text/html';
            
    		# 端口直接指向那个目录
            location / {
               root /docker/elasticsearch/IK; 
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    修改后重启nginx

    # 每次更改后重启nginx
    cd /usr/sbin
    ./nginx -s reload
    
    • 1
    • 2
    • 3

    检验访问输入
    http://113.131.57.206:7090/remote.txt

    在这里插入图片描述

    然后再去kibanadevtols就会按照我们自定义的词汇分词
    在这里插入图片描述

    结束

    至此, 安装完成, 也是博主踩坑慢慢安装过来的, 有任何问题也可以留言与博主交流, 希望对你有帮助!

  • 相关阅读:
    封装、包、访问权限修饰符、static变量
    Java后端开发(五)-- 对象转换工具类
    MyBatis学习笔记(一)
    Ompal138+Spartan-6 FPGA开发板规格软硬件资料数据手册
    Maven ,命令行中,字符编码 设置
    [架构之路-14]:目标系统 - 硬件平台 - CPU、MPU、NPU、GPU、MCU、DSP、FPGA、SOC的区别
    python代码修改
    QSharedMemory使用详解
    Ubuntu服务器搭建 - 环境篇
    经典网络解(三) 生成模型VAE | 自编码器、变分自编码器|有监督,无监督
  • 原文地址:https://blog.csdn.net/weixin_43961117/article/details/126241592