1. 程式人生 > 其它 >DAY 126 ES--配置檔案

DAY 126 ES--配置檔案

一 前言

elasticsearch\config目錄下,有三個核心的配置檔案:

  • elasticsearch.yml,es相關的配置。

  • jvm.options,Java jvm相關引數的配置。

  • log4j2.properties,日誌相關的配置,因為es採用了log4j的日誌框架。

這裡以elasticsearch6.5.4版本為例,並且由於版本不同,配置也不太也一樣,僅作參考!

二 elasticsearch.yml

2.1 Cluster

  • 配置叢集名稱,由多個es例項組成的叢集,有一個共同的名稱。

cluster.name: my-application
  • 叢集埠設定。

transport.tcp.port: 9300
  • 防止同一個shard的主副本存在同一個物理機上。

cluster.routing.allocation.same_shard.host:true
  • 初始化資料恢復時,併發恢復執行緒的個數,預設是4個。

cluster.routing.allocation.node_initial_primaries_recoveries: 4
  • 新增刪除節點或者負載均衡時併發恢復執行緒的個數。預設是4個。

cluster.routing.allocation.node_concurrent_recoveries: 4

2.2 Node

  • 節點名稱配置,一個es例項其實是一個es程序,在叢集中被稱為節點。如果一個伺服器上配置叢集,各節點的名稱不能重複。

node.name: node-1
  • 為節點新增自定義屬性,

node.attr.rack: r1
  • 該節點是否有資格成為主節點,預設為true。

node.master: true
  • 設定節點是否儲存資料。

node.data: true
  • 設定預設主分片的個數,預設為5片,需要說明的是,主分片一經分配則無法更改。

index.number_of_shards: 5
  • 設定預設複製分片的個數,預設一個主分片對應一個複製分片,需要說明的是,複製分片可以手動調整。

index.number_of_replicas: 1
  • 設定資料恢復時限制的頻寬,預設0及不限制。

indices.recovery.max_size_per_ser: 0
  • 設定這個引數來限制從其它分片恢復資料時最大同時開啟併發流的個數,預設為5。

indices.recovery.concurrent_streams: 5
  • 設定資料恢復時限制的頻寬,預設0及不限制。

indices.recovery.max_size_per_ser: 0
  • 設定這個引數來限制從其它分片恢復資料時最大同時開啟併發流的個數,預設為5。

indices.recovery.concurrent_streams: 5

2.3 Paths

  • 儲存資料路徑設定,多個路徑以英文狀態的逗號分隔,預設根目錄下的conf目錄。

path.data: /path/to/data
# path.data: /path/to/data1,/path/to/data1
  • 設定臨時檔案儲存路徑,預設是es目錄下的work目錄。

path.work: /path/to/work
  • 日誌檔案路徑,預設為根目錄下的logs目錄。

path.logs: /path/to/logs
  • 設定日誌檔案的儲存路徑,預設是es目錄下的logs目錄。

path.logs: /path/to/logs
  • 設定外掛的存放路徑,預設是es目錄下的plugins目錄。

path.plugins: /path/to/plugins

2.4 Network

  • 為es例項繫結特定的IP地址。

network.host: 192.168.0.1

上面的設定可以拆分為兩個引數。

network.bind_host: 192.168.0.1  # 設定繫結的ip地址,ipv4或ipv6都可以
network.publish_host: 192.168.0.1 # 設定其它節點和該節點互動的ip地址,如果不設定它會自動判斷,值必須是個真實的ip地址
  • 為es例項設定特定的埠,預設為9200埠。

http.port: 9200

2.5 Discovery

  • 設定是否開啟多播發現節點,預設是true。

discovery.zen.ping.multicast.enabled: true
  • 配置es單播發現列表,在es啟動時,通過這個列表發現別的es例項,從而加入叢集。

discovery.zen.ping.unicast.hosts: ["host1", "host2"]
discovery.zen.ping.unicast.hosts: ["10.0.0.1", "10.0.0.3:9300", "10.0.0.6[9300-9400]"]
  • discovery.zen.minimum_master_nodes設定是告訴叢集有多少個節點有資格成為主節點,一般的規則是叢集節點數除以2(向下取整)再加一。比如3個節點叢集要設定為2,這個試著是為了防止腦裂問題

  • 設定叢集中自動發現其它節點時ping連線超時時間,預設為3秒,對於比較差的網路環境可以高點的值來防止自動發現時出錯。

discovery.zen.ping.timeout: 3s

2.6 Memory

  • 啟動時鎖定記憶體,預設為true,因為當jvm開始swapping時es的效率 會降低,所以要保證它不swap,可以把ES_MIN_MEM和ES_MAX_MEM兩個環境變數設定成同一個值,並且保證機器有足夠的記憶體分配給es。 同時也要允許elasticsearch的程序可以鎖住記憶體,linux下可以通過ulimit -l unlimited命令

bootstrap.memory_lock: true
  • 禁止swapping交換。

bootstrap.mlockall: true

2.7 Gateway

  • 設定是否壓縮tcp傳輸時的資料。預設是false不壓縮。

transport.tcp.compress: true
  • 設定內容的最大容量,預設是100mb。

http.max_content_length: 100mb
  • 是否使用http協議對外提供服務。預設為true。

http.enabled: false
  • 設定gateway的型別,預設為本地檔案系統,也可以設定分散式檔案系統、Hadoop的HDFS或者AWS的都可以。

gateway.type: local
  • 在完全重新啟動叢集之後阻塞初始恢復,直到啟動N個節點為止,詳情參見Recovery

gateway.recover_after_nodes: 3
  • 設定初始化資料恢復程序的超時時間。預設是5分鐘。

gateway.recover_after_time: 5m
  • 設定該叢集中節點的數量,預設為2個,一旦這N個節點啟動,就會立即進行資料恢復。

gateway.expected_nodes: 2

2.8 Various

  • 刪除索引時需要顯式名稱。

action.destructive_requires_name: true

三 jvm.options

  • 設定jvm堆的大小,最大值和最小值,應該是一致的,並且應該根據你的實體記憶體決定。

-Xms1g   # 設定最小堆為1g
-Xmx1g # 設定最大堆為1g

四 log4j2.properties

這個配置檔案,我們一般不修改其配置。