# ---------------------------------- Cluster -----------------------------------
java
# Use a descriptive name for your cluster:
# 集羣名稱,用於定義哪些elasticsearch節點屬同一個集羣。
cluster.name: bigdata
# ------------------------------------ Node ------------------------------------
# 節點名稱,用於惟一標識節點,不可重名
node.name: server3
# 一、如下列出了三種集羣拓撲模式,以下:
# 若是想讓節點不具有選舉主節點的資格,只用來作數據存儲節點。
node.master:
false
node.data:
true
# 二、若是想讓節點成爲主節點,且不存儲任何數據,只做爲集羣協調者。
node.master:
true
node.data:
false
# 三、若是想讓節點既不成爲主節點,又不成爲數據節點,那麼可將他做爲搜索器,從節點中獲取數據,生成搜索結果等
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