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": {}}}'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM