zoukankan      html  css  js  c++  java
  • docker配置搭建elasticsearch集群

    一、es集群的配置搭建

    准备三台服务器:192.168.81.130、192.168.81.131、192.168.81.132

    1、修改每台主机的内核参数vm.max_map_count

    编辑/etc/sysctl.conf

    vm.max_map_count = 655350

    然后执行sysctl -p

    2、将es镜像pull下来,本文采用elasticsearch:7.1.1

    3、编辑docker-compose.yaml文件

    version: '3'
    services:
      elasticsearch:                    # 服务名称
        image: elasticsearch:7.1.1      # 使用的镜像
        container_name: elasticsearch   # 容器名称
        restart: always                 # 失败自动重启策略
        environment:
          - node.name=node-130                   # 节点名称,集群模式下每个节点名称唯一
          - network.publish_host=192.168.81.130  # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
          - network.host=0.0.0.0                # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
          - discovery.seed_hosts=192.168.81.130,192.168.81.131,192.168.81.132          # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
          - cluster.initial_master_nodes=192.168.81.130,192.168.81.131,192.168.81.132  # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
          - cluster.name=es-cluster     # 集群名称,相同名称为一个集群, 三个es节点须一致
          # - http.cors.enabled=true    # 是否支持跨域,是:true // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
          # - http.cors.allow-origin="*" # 表示支持所有域名      // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
          - bootstrap.memory_lock=true  # 内存交换的选项,官网建议为true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # 设置内存,如内存不足,可以尝试调低点
        ulimits:        # 栈内存的上限
          memlock:
            soft: -1    # 不限制
            hard: -1    # 不限制
        volumes:
          - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
          - ./data:/usr/share/elasticsearch/data  # 存放数据的文件, 注意:这里的esdata为 顶级volumes下的一项。
        ports:
          - 9200:9200    # http端口,可以直接浏览器访问
          - 9300:9300    # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。

    4、编辑elasticsearch.yml配置文件

    network.host: 0.0.0.0
    http.cors.enabled: true        # 是否支持跨域
    http.cors.allow-origin: "*"    # 表示支持所有域名

    5、初次运行的时候,注释掉compose文件中的volume,需要先运行起来,然后将容器中的data目录cp到宿主机上,否则报错

    执行docker-compose up -d

    然后执行docker cp elasticsearch:/usr/share/elasticsearch/data .

    6、然后执行docker-compose down,然后将compose文件中的volume选项打开再启动即可完成

    7、访问web界面http://192.168.81.132:9200/_cluster/health?pretty

     至此,es搭建完毕!

    参考文献:https://www.cnblogs.com/lz0925/p/12011026.html

    二、关于elasticsearch的分析器

    参考文献:https://www.cnblogs.com/cjsblog/p/10171695.html

    1、空白字符分析器:whitespace

    按空白字符 —— 空格、tabs、换行符等等进行简单拆分 —— 然后假定连续的非空格字符组成了一个语汇单元。

     2、标准分析器:standard

    使用 Unicode 文本分割算法 (定义来源于 Unicode Standard Annex #29)来寻找单词 之间 的界限,并且输出所有界限之间的内容。 Unicode 内含的知识使其可以成功的对包含混合语言的文本进行分词。

    标点符号可能是单词的一部分,也可能不是,这取决于它出现的位置:

     3、simple分析器:当它遇到只要不是字母的字符,就将文本解析成term,而且所有的term都是小写的。

     4、stop分析器: stop 分析器 和 simple 分析器很像,唯一不同的是,stop 分析器增加了对删除停止词的支持。默认用的停止词是 _englisht_

    (PS:意思是,假设有一句话“this is a apple”,并且假设“this” 和 “is”都是停止词,那么用simple的话输出会是[ this , is , a , apple ],而用stop输出的结果会是[ a , apple ],到这里就看出二者的区别了,stop 不会输出停止词,也就是说它不认为停止词是一个term)

    (PS:所谓的停止词,可以理解为分隔符)

     5、中英文分析器:smartCN

    一个简单的中文或中英文混合文本的分词器

    这个插件提供 smartcn analyzer 和 smartcn_tokenizer tokenizer,而且不需要配置

    # 安装
    bin/elasticsearch-plugin install analysis-smartcn
    # 卸载
    bin/elasticsearch-plugin remove analysis-smartcn

     6、中文分词器:ik

    参考:https://github.com/medcl/elasticsearch-analysis-ik

    下面为Dockerfile

    FROM elasticsearch:7.6.2
    ADD https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip /usr/share/elasticsearch/plugins/ik/
    RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
      && echo 'Asia/Shanghai' > /etc/timezone 
      && cd /usr/share/elasticsearch/plugins/ik/ 
      && unzip elasticsearch-analysis-ik-7.6.2.zip 
      && rm -f elasticsearch-analysis-ik-7.6.2.zip

     7、curl命令对es的操作示例:

    获取:curl -XGET 'http://localhost:9200/odin_device_device_collection'
    删:curl -XDELETE 'http://localhost:9200/odin_device_device_collection'
    插:curl -XPUT 'http://localhost:9200/odin_device_device_collection' -H 'Content-Type: application/json' -d '数据内容'
    查:curl -XGET "http://localhost:9200/odin_device_device_collection/_doc/_search" -H 'Content-Type: application/json' -d'{"query": {"match_all": {}},"from": 0,"size": 300}'
    清空:curl -XPOST "http://localhost:9200/odin_device_device_collection/_doc/_delete_by_query"  -H 'Content-Type: application/json' -d'{"query": {"match_all": {}}}'
  • 相关阅读:
    NOIP1996 第三题
    vijos P1071
    USACO 2.3
    NOIP2006 第二题(change)
    NOIP2006 第二题
    NOIP2005 第三题
    Building Block 动态规划
    砝码问题 Weight
    装箱问题(Packing DP)
    算法第二章上机实践报告
  • 原文地址:https://www.cnblogs.com/caibao666/p/12753274.html
Copyright © 2011-2022 走看看