# Cluster # Use a descriptive name for your cluster: # 集群名稱,用於定義哪些elasticsearch節點屬同一個集群。 cluster.name: bigdata # Node # 節點名稱,用於唯一標識節點,不可重名 node.name: ...
# ---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
# 集群名稱,用於定義哪些elasticsearch節點屬同一個集群。
cluster.name: bigdata
# ------------------------------------ Node ------------------------------------
# 節點名稱,用於唯一標識節點,不可重名
node.name: server3
# 1、以下列出了三種集群拓撲模式,如下:
# 如果想讓節點不具備選舉主節點的資格,只用來做數據存儲節點。
node.master:
false
node.data:
true
# 2、如果想讓節點成為主節點,且不存儲任何數據,只作為集群協調者。
node.master:
true
node.data:
false
# 3、如果想讓節點既不成為主節點,又不成為數據節點,那麼可將他作為搜索器,從節點中獲取數據,生成搜索結果等
node.master:
false
node.data:
false
# 這個配置限制了單機上可以開啟的ES存儲實例的個數,當我們需要單機多實例,則需要把這個配置賦值2,或者更高。
#node.max_local_storage_nodes: 1
# ----------------------------------- Index ------------------------------------
# 設置索引的分片數,預設為5 "number_of_shards" 是索引創建後一次生成的,後續不可更改設置
index.number_of_shards: 5
# 設置索引的副本數,預設為1
index.number_of_replicas: 1
# 索引的刷新頻率,預設1秒,太小會造成索引頻繁刷新,新的數據寫入就慢了。(此參數的設置需要在寫入性能和實時搜索中取平衡)通常在ELK場景中需要將值調大一些比如60s,在有_template的情況下,需要設置在應用的_template中才生效。
index.refresh_interval: 120s
# ----------------------------------- Paths ------------------------------------
# 數據存儲路徑,可以設置多個路徑用逗號分隔,有助於提高IO。 # path.data: /home/path1,/home/path2
path.data:
/home/elk/server3_data
# 日誌文件路徑
path.logs:
/var/log/elasticsearch
# 臨時文件的路徑
path.work:
/path/to/work
# ----------------------------------- Memory -------------------------------------
# 確保 ES_MIN_MEM 和 ES_MAX_MEM 環境變數設置為相同的值,以及機器有足夠的記憶體分配給Elasticsearch
# 註意:記憶體也不是越大越好,一般64位機器,最大分配記憶體別才超過32G
# 當JVM開始寫入交換空間時(swapping)ElasticSearch性能會低下,你應該保證它不會寫入交換空間
# 設置這個屬性為true來鎖定記憶體,同時也要允許elasticsearch的進程可以鎖住記憶體,linux下可以通過 `ulimit -l unlimited` 命令
bootstrap.mlockall:
true
# 節點用於 fielddata 的最大記憶體,如果 fielddata
# 達到該閾值,就會把舊數據交換出去。該參數可以設置百分比或者絕對值。預設設置是不限制,所以強烈建議設置該值,比如 10%。
indices.fielddata.cache.size: 50mb
# indices.fielddata.cache.expire 這個參數絕對絕對不要設置!
indices.breaker.fielddata.limit 預設值是JVM堆記憶體的60%,註意為了讓設置正常生效,一定要確保 indices.breaker.fielddata.limit 的值
大於 indices.fielddata.cache.size 的值。否則的話,fielddata 大小一到 limit 閾值就報錯,就永遠道不了 size 閾值,無法觸發對舊數據的交換任務了。
#------------------------------------ Network And HTTP -----------------------------
# 設置綁定的ip地址,可以是ipv4或ipv6的,預設為0.0.0.0
network.bind_host: 192.168.0.1
# 設置其它節點和該節點通信的ip地址,如果不設置它會自動設置,值必須是個真實的ip地址
network.publish_host: 192.168.0.1
# 同時設置bind_host和publish_host上面兩個參數
network.host: 192.168.0.1
# 設置集群中節點間通信的tcp埠,預設是9300
transport.tcp.port: 9300
# 設置是否壓縮tcp傳輸時的數據,預設為false,不壓縮
transport.tcp.compress:
true
# 設置對外服務的http埠,預設為9200
http.port: 9200
# 設置請求內容的最大容量,預設100mb
http.max_content_length: 100mb
# ------------------------------------ Translog -------------------------------------
#當事務日誌累積到多少條數據後flush一次。
index.translog.flush_threshold_ops: 50000
# --------------------------------- Discovery --------------------------------------
# 這個參數決定了要選舉一個Master至少需要多少個節點,預設值是1,推薦設置為 N/2 + 1,N是集群中節點的數量,這樣可以有效避免腦裂
discovery.zen.minimum_master_nodes: 1
# 在java裡面GC是很常見的,但在GC時間比較長的時候。在預設配置下,節點會頻繁失聯。節點的失聯又會導致數據頻繁重傳,甚至會導致整個集群基本不可用。
# discovery參數是用來做集群之間節點通信的,預設超時時間是比較小的。我們把參數適當調大,避免集群GC時間較長導致節點的丟失、失聯。
discovery.zen.
ping
.timeout: 200s
discovery.zen.fd.ping_timeout: 200s
discovery.zen.fd.
ping
.interval: 30s
discovery.zen.fd.
ping
.retries: 6
# 設置集群中節點的探測列表,新加入集群的節點需要加入列表中才能被探測到。
discovery.zen.
ping
.unicast.hosts: [
"10.10.1.244:9300"
,]
# 是否打開廣播自動發現節點,預設為true
discovery.zen.
ping
.multicast.enabled:
false
indices.store.throttle.
type
: merge
indices.store.throttle.max_bytes_per_sec: 100mb