日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

elasticsearch文档-modules

發(fā)布時(shí)間:2024/1/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elasticsearch文档-modules 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

modules

模塊

cluster

原文

基本概念

cluster: 集群,一個(gè)集群通常由很多節(jié)點(diǎn)(node)組成?
node: 節(jié)點(diǎn),比如集群中的每臺機(jī)器可以看做一個(gè)node?
shard: 分片,ES是分布式搜索引擎,會把數(shù)據(jù)拆分成很多個(gè)shard,一個(gè)索引默認(rèn)有5個(gè)shard?
replica: 副本,ES是high availability的, 為了數(shù)據(jù)安全會把同一份數(shù)據(jù)存放在多個(gè)節(jié)點(diǎn),默認(rèn)情況下一個(gè)索引的數(shù)據(jù)會存兩份副本。一份是primary,一份是replica。 primary: 主節(jié)點(diǎn)?
rebalancing: 指數(shù)據(jù)在集群的節(jié)點(diǎn)中重新分配,比如當(dāng)集群中增加或者移除節(jié)點(diǎn)時(shí)就會發(fā)生rebalancing

Shards allocation

Shards allocation是指在各個(gè)節(jié)點(diǎn)分配shard的過程。 在初始化恢復(fù), 分配replica, rebalancing, 新增或移除節(jié)點(diǎn)時(shí)會發(fā)生。

一些基本配置如下

cluster.routing.allocation.allow_rebalance

根據(jù)集群中節(jié)點(diǎn)的狀態(tài)來控制什么時(shí)候可以rebalancing, 可以設(shè)置三種方式。

  • indices_primaries_active: 僅當(dāng)所有的primary shards是active的時(shí)候才允許rebalancing。

  • indices_all_active: 僅當(dāng)所有的shards是active的時(shí)候才允許rebalancing。

  • always: 一組shard、replication是active時(shí)就可以rebalancing。

默認(rèn)值為indices_all_active,可以減少cluster初始化恢復(fù)時(shí)各節(jié)點(diǎn)之間的交互。

cluster.routing.allocation.cluster_concurrent_rebalance

設(shè)置在cluster中最多可以允許幾個(gè)rebalancing同時(shí)進(jìn)行,默認(rèn)為2, 如果設(shè)置為-1則意味著不做限制。

cluster.routing.allocation.node_initial_primaries_recoveries

限制每個(gè)節(jié)點(diǎn)可以同時(shí)初始化恢復(fù)primary shard數(shù)量。

這個(gè)設(shè)置是為了防止同時(shí)進(jìn)行的recovery進(jìn)程太多影響節(jié)點(diǎn)負(fù)載,因?yàn)榇蠖鄶?shù)情況下用的是local gateway,速度相當(dāng)快,所以可以同時(shí)執(zhí)行多個(gè)recovery進(jìn)程而不會造成太多的負(fù)荷,默認(rèn)是4。

cluster.routing.allocation.node_concurrent_recoveries

限制每個(gè)節(jié)點(diǎn)并行recovery的數(shù)量, 默認(rèn)是2。

cluster.routing.allocation.disable_new_allocation

設(shè)置是否禁止分配新的新的primary shard,注意, 設(shè)置為true會阻止新建的索引的shard分配。 因?yàn)槿绻鹥rimary不存在,replica會自動提升為primary, 所以這個(gè)配置通過更新cluster配置的API動態(tài)更新才有意義。

cluster.routing.allocation.disable_allocation

是否禁止分配primary和replica,這個(gè)配置通過更新cluster配置的API動態(tài)更新才有意義。

cluster.routing.allocation.disable_replica_allocation

是否禁止分配replica,和上面的設(shè)置類似, 這個(gè)配置通過更新cluster配置的API動態(tài)更新才有意義。

indices.recovery.concurrent_streams

設(shè)置在從對應(yīng)的shard恢復(fù)一個(gè)shard時(shí),可以同時(shí)打開的數(shù)據(jù)流的數(shù)量(節(jié)點(diǎn)級別),默認(rèn)是3。

Cluster allocation awareness

分片規(guī)則

集群分片規(guī)則(Cluster allocation awareness)允許我們用一些參數(shù)來配置整個(gè)集群中shard和replica的分片規(guī)則。 下面通過一個(gè)例子來解釋一下。

假設(shè)我們有幾個(gè)機(jī)架,我們給一節(jié)點(diǎn)配置一個(gè)名為rack_id的屬性(其他名字也可以), 配置例子如下:

node.rack_id: rack_one

上面例子為這個(gè)節(jié)點(diǎn)配置了一個(gè)名為rack_id的屬性, 值為rack_one。 接下來將rack_id配置為分片規(guī)則所用的屬性(在所有節(jié)點(diǎn)都要設(shè)置)。

cluster.routing.allocation.awareness.attributes: rack_id

上面的配置意味著分片規(guī)則會基于屬性rack_id來做shard和replica分配。 例如,我們有兩個(gè)node.rack_id屬性設(shè)置為rack_one的節(jié)點(diǎn), 部署了一個(gè)有5個(gè)shards和1個(gè)replica的索引, 索引數(shù)據(jù)會分布到這兩個(gè)節(jié)點(diǎn)上(每個(gè)節(jié)點(diǎn)有5個(gè)shard, 1個(gè)replica, 總共10個(gè)shards)。

如果我們再加入兩個(gè)節(jié)點(diǎn),這兩個(gè)節(jié)點(diǎn)的node.rack_id屬性設(shè)置為rack_two, shard會在這些節(jié)點(diǎn)上重新分配, 但是一個(gè)shard和他的replica不會分配到有相同rack_id屬性的節(jié)點(diǎn)上。

可以為分片規(guī)則設(shè)置多個(gè)屬性, 比如:

cluster.routing.allocation.awareness.attributes: rack_id,zone

注意:啟用了分片規(guī)則屬性后,如果一個(gè)節(jié)點(diǎn)沒有配置這些屬性, shard就不會分配到這個(gè)節(jié)點(diǎn)上。

forced awareness

強(qiáng)制行分片規(guī)則

有時(shí)候我們提前知道用來做分片規(guī)則的屬性會有更多的值, 我們不希望一些replica被分配到一組特定節(jié)點(diǎn)上, 對于這種情況, 我們可以針對這些屬性值用強(qiáng)制分片規(guī)則。

例如,我們用屬性zone來做分片規(guī)則屬性,并且我們知道會有兩個(gè)zone:zone1和zone2。 下面是強(qiáng)制分片規(guī)則設(shè)置的例子:

cluster.routing.allocation.awareness.force.zone.values:?zone1,zone2cluster.routing.allocation.awareness.attributes:?zone

現(xiàn)在我們先啟用兩個(gè)node.zone屬性設(shè)置成zone1的節(jié)點(diǎn),然后創(chuàng)建一個(gè)有5個(gè)shard和1個(gè)replica的索引。 索引建完后只有5個(gè)shard(沒有replica),要等到我們再啟用更多屬性node.zone為zone2的節(jié)點(diǎn)時(shí),replica才會被分配。

automatic preference when searching / geting

在執(zhí)行search或者執(zhí)行g(shù)et指令時(shí), 接受請求的節(jié)點(diǎn)會優(yōu)先選擇與其有相同屬性值的節(jié)點(diǎn)分片上執(zhí)行請求。

realtime settings update

這些設(shè)置可以通過更新cluster配置的api在一個(gè)運(yùn)行著的cluster上實(shí)時(shí)更新。

shard allocation filtering

可以用include/exclude過濾器控制索引部署到哪些節(jié)點(diǎn)上,過濾器可以設(shè)置在索引級別,也可以設(shè)置在集群級別, 我們先看一下設(shè)置在索引級別的例子。

假設(shè)我們有四個(gè)節(jié)點(diǎn), 每個(gè)節(jié)點(diǎn)配置了一個(gè)名為tag的分片規(guī)則屬性(可以是任何名字),節(jié)點(diǎn)1的tag屬性置為value1, 節(jié)點(diǎn)2的tag屬性設(shè)置為value2,以此類推。

我們可以把配置項(xiàng)index.routing.allocation.include.tag設(shè)置為value1,value2來使創(chuàng)建的索引只部署到哪些tag屬性為value1和value2的節(jié)點(diǎn)上,例如

curl?-XPUT?localhost:9200/test/_settings?-d?'{??????"index.routing.allocation.include.tag"?:?"value1,value2"}'

另一方面, 我們將配置項(xiàng)index.routing.allocation.exclude.tag設(shè)置為value3, 這樣創(chuàng)建的索引會被部署到tag屬性為value3之外的那些節(jié)點(diǎn)上,例如

curl?-XPUT?localhost:9200/test/_settings?-d?'{??????"index.routing.allocation.exclude.tag"?:?"value3"}'

從0.90版開始, 可以用index.routing.allocation.require.*來設(shè)置一系列規(guī)則, 只有符合全部規(guī)則的節(jié)點(diǎn)才會分配shard, 相對而言include則是只要符合任意一條就可以。

include,?exclude和require的值都支持通配符, 例如value1*。 一個(gè)特殊的節(jié)點(diǎn)名是_ip,可以用來匹配節(jié)點(diǎn)的ip地址. 另外一個(gè)特殊屬性_host可以用來匹配節(jié)點(diǎn)的主機(jī)名和ip地址。

上面說過,一個(gè)節(jié)點(diǎn)可以配置幾個(gè)屬性, 例如

node.group1:?group1_value1node.group2:?group2_value4

對應(yīng)的,?include,?exclude?和?require?也可以用幾個(gè)屬性, 例如

curl?-XPUT?localhost:9200/test/_settings?-d?'{????"index.routing.allocation.include.group1"?:?"xxx"????"index.routing.allocation.include.group2"?:?"yyy",????"index.routing.allocation.exclude.group3"?:?"zzz",????"index.routing.allocation.require.group4"?:?"aaa"}'

這些設(shè)置可以用更新配置的api實(shí)時(shí)更新, 實(shí)時(shí)移動索引(索引的分片)。

Cluster級別的過濾器可以用更新cluster設(shè)置的api來實(shí)時(shí)定義和更新,這些設(shè)置在解除一個(gè)節(jié)點(diǎn)時(shí)很有用(即使replica數(shù)量設(shè)置為0)。 下面是根據(jù)ip地址解除一個(gè)節(jié)點(diǎn)的例子:

curl?-XPUT?localhost:9200/_cluster/settings?-d?'{????"transient"?:?{????????"cluster.routing.allocation.exclude._ip"?:?"10.0.0.1"????}}'

discovery

原文

discovery模塊負(fù)責(zé)發(fā)現(xiàn)集群(cluster)中的節(jié)點(diǎn),以及選舉出主節(jié)點(diǎn)。

注意,ES是一個(gè)基于端到端(p2p)的系統(tǒng),節(jié)點(diǎn)之間直接通信,所有主要的API(index, search, delete)不需要和主節(jié)點(diǎn)(master node)通信。 主節(jié)點(diǎn)的職責(zé)是維護(hù)整個(gè)集群的狀態(tài),并且在節(jié)點(diǎn)加入或者離開集群時(shí)重新分片。 每次集群的狀體改變會通知到集群中的其他節(jié)點(diǎn)(方式取決于discovery模塊的具體實(shí)現(xiàn))。

settings

配置項(xiàng)cluster.name用來給集群設(shè)置一個(gè)名字,以此把一個(gè)集群和其他的集群區(qū)分開。 默認(rèn)的集群名是elasticsearch, 不過推薦改為能反映集群用途的有實(shí)際意義的名字。

ec2 discovery

EC2 discovery機(jī)制使用EC2的API來執(zhí)行自動發(fā)現(xiàn),用不到,不看了。

zen discovery

Zen發(fā)現(xiàn)機(jī)制

zen發(fā)現(xiàn)機(jī)制是ES默認(rèn)的內(nèi)置發(fā)現(xiàn)模塊。 它提供了多播和單播兩種發(fā)現(xiàn)方式,并且能夠很容易的擴(kuò)展以支持云環(huán)境。

zen發(fā)現(xiàn)機(jī)制是和其他模塊集成在一起的,比如所有節(jié)點(diǎn)之間通訊是用trasport模塊來完成。

Zen發(fā)現(xiàn)機(jī)制分為幾個(gè)子模塊,接下來分別做詳細(xì)解釋。

ping

ping是指一個(gè)節(jié)點(diǎn)用發(fā)現(xiàn)機(jī)制發(fā)現(xiàn)其他節(jié)點(diǎn)的過程, 支持多播(multicast)和單播(unicast)兩種方式,也可以組合使用。

multicast

multicast是指發(fā)送一個(gè)或多個(gè)多播請求,存在的節(jié)點(diǎn)會接受并且相應(yīng)請求。 它提供了一組以discovery.zen.ping.multicast為前綴的配置項(xiàng)。

SettingDescription
groupgroup地址,默認(rèn)值為224.2.2.4
port端口,默認(rèn)為54328
ttl多播消息的ttl,默認(rèn)是3
address綁定地址,默認(rèn)為null,即綁定所有可用的network接口。

unicast

在多播禁用的情況下可以使用unicast發(fā)現(xiàn)方式。 它需要一個(gè)主機(jī)列表, 它提供了下面以discovery.zen.ping.unicast為前綴的配置項(xiàng)。

SettingDescription
hosts一個(gè)數(shù)組或者以逗號分隔的字符串, 每個(gè)值的格式為host:port或者h(yuǎn)ost[port1-port2]

unicast發(fā)現(xiàn)方式需要借助transport模塊來實(shí)現(xiàn)。

master election

主節(jié)點(diǎn)選舉

作為ping初始化過程的一部分, 需要選舉出一個(gè)集群的master節(jié)點(diǎn)或者加入到一個(gè)已經(jīng)選出的master節(jié)點(diǎn), 這個(gè)過程是自動完成。 可以通過配置項(xiàng)discovery.zen.ping_timeout來設(shè)置ping的超時(shí)時(shí)間(默認(rèn)是3s)以應(yīng)對網(wǎng)絡(luò)速度慢或者網(wǎng)絡(luò)擁堵的情況。 設(shè)置一個(gè)比較大的值可以減少失敗的幾率。

節(jié)點(diǎn)可以設(shè)置屬性node.master為false來避免被選舉為master節(jié)點(diǎn)。 注意, 如果一個(gè)節(jié)點(diǎn)被設(shè)置為客戶端節(jié)點(diǎn)(node.client屬性設(shè)置為true), 這個(gè)節(jié)點(diǎn)不會被選舉為master節(jié)點(diǎn)(node.master自動設(shè)置為false)。

屬性discovery.zen.minimum_master_nodes設(shè)置一個(gè)集群中最少的合格master節(jié)點(diǎn)數(shù)量, 對于2個(gè)節(jié)點(diǎn)以上的集群,建議設(shè)置為大于1的值。

舉個(gè)例子, 假設(shè)集群有5個(gè)節(jié)點(diǎn),?minimum_master_nodes設(shè)置為3, 如果2個(gè)節(jié)點(diǎn)掉線了,這兩個(gè)節(jié)點(diǎn)不會自己組建一個(gè)集群, 而是嘗試加入另一個(gè)集群。

這個(gè)設(shè)置可以避免網(wǎng)絡(luò)故障時(shí)有些節(jié)點(diǎn)試圖自行組織集群,從而導(dǎo)致整個(gè)集群不穩(wěn)定。

fault detection

錯(cuò)誤檢測

有兩種錯(cuò)誤檢測方式,一種是master節(jié)點(diǎn)ping集群中所有其他的節(jié)點(diǎn)來驗(yàn)證他們是否存活,另一種是每個(gè)節(jié)點(diǎn)ping master節(jié)點(diǎn)來驗(yàn)證它是否存活,或者是否需要初始化一個(gè)選舉。

下面的配置項(xiàng)用于設(shè)置錯(cuò)誤檢測,前綴是discovery.zen.fd:

SettingDescription
ping_intervalping的頻率, 默認(rèn)1s
ping_timeoutping的超時(shí)時(shí)間, 默認(rèn)30s
ping_retries如果ping失敗或者超時(shí),重試的次數(shù)

external multicast

外部多播

multicast 發(fā)現(xiàn)機(jī)制還支持外部多播請求,外部客戶端可以發(fā)送多播請求, 格式為:

{????"request"?:?{????????"cluster_name":?"test_cluster"????}}

響應(yīng)格式類似節(jié)點(diǎn)信息的響應(yīng)(只有節(jié)點(diǎn)信息,包括transport/http地址以及節(jié)點(diǎn)的屬性):

{????"response"?:?{????????"cluster_name"?:?"test_cluster",????????"transport_address"?:?"...",????????"http_address"?:?"...",????????"attributes"?:?{????????????"..."????????}????}}

注意,可以禁用內(nèi)部multicast發(fā)現(xiàn)機(jī)制,只啟用外部多播發(fā)現(xiàn)機(jī)制。 方式為將discovery.zen.ping.multicast.enabled設(shè)為true(默認(rèn)),但是將discovery.zen.ping.multicast.ping.enabled設(shè)為false。

gateway

原文

gateway模塊存儲集群元數(shù)據(jù)(meta data)的狀態(tài),集群元數(shù)據(jù)主要包括索引的配置和聲明的mapping定義。

每次集群元數(shù)據(jù)發(fā)生變化時(shí)(比如添加或刪除索引),會通過gateway來持久化這些變化。 集群啟動時(shí)會從gateway讀取并且應(yīng)用這些數(shù)據(jù)。

設(shè)置在節(jié)點(diǎn)級別的gateway自動控制索引所用的gateway。 比如節(jié)點(diǎn)用fs?gateway,該節(jié)點(diǎn)創(chuàng)建的索引也自動用fs?gateway。 在這種情況下, 如節(jié)點(diǎn)不應(yīng)該持久化狀態(tài)數(shù)據(jù), 應(yīng)該明確設(shè)置為none(唯一可以設(shè)置的值)。

ES默認(rèn)使用的gateway是local gateway。

recovery after nodes / time

大多數(shù)場景下,集群的元數(shù)據(jù)只能在特定的節(jié)點(diǎn)已經(jīng)啟動后才能被恢復(fù), 或者等待到超時(shí)。 這在集群重啟時(shí)非常有用,此時(shí)每個(gè)節(jié)點(diǎn)的本地索引存儲仍然可用,不需要從gateway恢復(fù)(能夠減少從gateway恢復(fù)的時(shí)間)。

gateway.recover_after_nodes(數(shù)字類型)設(shè)置多少個(gè)合格的data節(jié)點(diǎn)以及master節(jié)點(diǎn)啟動后觸發(fā)recovery。?gateway.recover_after_data_nodes和gateway.recover_after_master_nodes含義類似,只不過分別設(shè)置data節(jié)點(diǎn)和master節(jié)點(diǎn)的數(shù)值。?gateway.recover_after_time(事件類型)設(shè)置在所有的gateway.recover_after...nodes條件滿足后,等待多長時(shí)間再開始recovery。

gateway.expected_nodes設(shè)置預(yù)期多少個(gè)合格的data和master節(jié)點(diǎn)啟動后就開始recovery,一旦滿足條件馬上啟動recovery,recover_after_time設(shè)置會被忽略,對應(yīng)的也支持gateway.expected_data_nodes和gateway.expected_master_nodes這兩個(gè)配置項(xiàng)。 一個(gè)配置的例子如下:

gateway:????recover_after_nodes:?1????recover_after_time:?5m????expected_nodes:?2、

這個(gè)例子配置了在一個(gè)預(yù)期兩個(gè)節(jié)點(diǎn)的集群中,在一個(gè)節(jié)點(diǎn)啟動后的5分鐘后執(zhí)行recovery,一旦集群中有已經(jīng)有兩個(gè)節(jié)點(diǎn)啟動了,立即開始recovery(不等待,忽略recover_after_time)。

注意,一旦元數(shù)據(jù)從gateway恢復(fù)了,那么這個(gè)配置就不再有效,直到下次集群完整重啟。

在集群元數(shù)據(jù)沒有恢復(fù)時(shí),為了避免和真實(shí)的集群元數(shù)據(jù)沖突,所有操作都會被阻止。

local gateway

本地網(wǎng)關(guān)

local gateway從每個(gè)節(jié)點(diǎn)的本地存儲中恢復(fù)整個(gè)集群狀態(tài)和索引數(shù)據(jù), 并且不需要節(jié)點(diǎn)級別的共享存儲。

注意,和共享類的gateway不同, local gateway的持久化不是異步的,一單一個(gè)操作被執(zhí)行, 數(shù)據(jù)就會被存儲以備集群恢復(fù)時(shí)使用。

非常重要的一點(diǎn)是在配置gateway.recover_after_nodes時(shí)要包括大多數(shù)在整個(gè)集群重啟后期望啟動的節(jié)點(diǎn), 這可以確保集群恢復(fù)到最新的狀態(tài)。 例如:

gateway:????recover_after_nodes:?1????recover_after_time:?5m????expected_nodes:?2

注意,為了能夠備份/快照完整地集群狀態(tài), 建議禁用flush的情況下所有節(jié)點(diǎn)的本地存儲都要有副本(理論上不需要所有的,只需要確保每個(gè)shard的副本被備份,這依賴replication的設(shè)置)。 共享存儲比如S3可以在一個(gè)地方保存不同節(jié)點(diǎn)的拷貝,盡管代價(jià)是帶來了更多的IO。

shared fs gateway

shared FS gateway已經(jīng)廢棄,以后會被移除, 不看了。

hadoop gateway

hadoop gateway以后會被移除, 不看了。

s3 gateway

s3 gateway以后會被移除, 不看了。

http

原文

http模塊允許通過http訪問ES的接口。

http是完全異步的,意味著等待響應(yīng)時(shí)不會阻塞線程。

如果有可能, 考慮使用HTTP keep alive來獲得更好的性能,并且http客戶端不要啟用HTTP chunking。

settings

下面是http模塊的一些設(shè)置。

SettingDescription
http.port綁定的端口范圍, 默認(rèn)9200-9300
http.max_content_lengthhttp請求大小的上限, 默認(rèn)100mb
http.max_initial_line_lengthhttp url的最大長度, 默認(rèn)4kb
http.compression是否支持http壓縮, 默認(rèn)是false
http.compression_levelhttp壓縮的級別, 默認(rèn)是6

http模塊共享通用的network設(shè)置。

disable http

設(shè)置http.enabled為false可以禁用http模塊,比如創(chuàng)建非數(shù)據(jù)節(jié)點(diǎn)來接收http請求,這些節(jié)點(diǎn)利用內(nèi)部的transport來和數(shù)據(jù)節(jié)點(diǎn)通信。

indices

原文

indices模塊可以對所有索引進(jìn)行全局管理。

indexing buffer

索引緩沖的設(shè)置可以控制多少內(nèi)存分配給索引進(jìn)程。 這是一個(gè)全局配置,會應(yīng)用于一個(gè)節(jié)點(diǎn)上所有不同的分片上。

indices.memory.index_buffer_size接受一個(gè)百分比或者一個(gè)表示字節(jié)大小的值。 默認(rèn)是10%,意味著分配給節(jié)點(diǎn)的總內(nèi)存的10%用來做索引緩沖的大小。 這個(gè)數(shù)值被分到不同的分片(shards)上。 如果設(shè)置的是百分比,還可以設(shè)置min_index_buffer_size?(默認(rèn)48mb)和max_index_buffer_size(默認(rèn)沒有上限)。

indices.memory.min_shard_index_buffer_size設(shè)置分配給每個(gè)分片的索引緩沖內(nèi)存的下限,默認(rèn)4mb。

ttl interval

你可以動態(tài)設(shè)置indices.ttl.interval來控制自動刪除過期documents的檢查間隔,默認(rèn)是60s。

刪除是批量進(jìn)行的,你可以設(shè)置indices.ttl.bulk_size來適應(yīng)你的需要,默認(rèn)值是10000。

其余的參考_ttl的文檔。

recovery

以下設(shè)置用來管理recovery的策略:

SettingDescription
indices.recovery.concurrent_streams默認(rèn)是3
indices.recovery.file_chunk_size默認(rèn)512kb
indices.recovery.translog_ops默認(rèn)1000
indices.recovery.translog_size默認(rèn)512kb
indices.recovery.compress默認(rèn)true
indices.recovery.max_bytes_per_sec默認(rèn)20mb
indices.recovery.max_size_per_sec0.90.1去掉,用indices.recovery.max_bytes_per_sec代替

下面的設(shè)置對存儲進(jìn)行限流:

SettingDescription
indices.store.throttle.type可以是merge?(默認(rèn)),?not或者all
indices.store.throttle.max_bytes_per_sec默認(rèn)20mb

jmx

removed as of v0.90.

memcached

原文

memcached模塊可以通過memecached協(xié)議來訪問ES的接口。

memcached模塊通過一個(gè)名為transport-memcached插件提供,插件的安裝說明見transport-memcached,也可以下載memcached插件并放在plugins目錄下。

memcached協(xié)議支持二進(jìn)制和文本兩種協(xié)議, 會自動檢測應(yīng)該用哪一種協(xié)議。

mapping rest to memcached protocol

Memcached命令會被映射到REST接口,并且會被同樣的REST層處理,下面是支持的memcached命令列表:

get

memcached的GET命令映射到REST的GET方法。 用URI (帶參數(shù))來做key。 memcached的GET命令不允許在請求中帶body(SET不允許返回結(jié)果), 為此大多數(shù)REST接口(比如search)允許接受一個(gè)"source"作為URI的參數(shù)。

set

memcached的SET命令映射為REST的POST。 用URI (帶參數(shù))來做key, body映射為REST的body。

delete

memcached的DELETE命令映射為REST的DELETE。 用URI (帶參數(shù))來做key。

quit

memcached的QUIT命令用來斷開客戶端鏈接。

settings

以下設(shè)置可以用來配置memcached:

SettingDescription
memcached.port綁定端口范圍, 默認(rèn)11211-11311

同樣共享通用的network設(shè)置。

disable memcached

設(shè)置memcached.enabled為false可以禁用memcached模塊, 默認(rèn)檢測到該插件即啟用memcached模塊。

network settings

原文

一個(gè)節(jié)點(diǎn)的多個(gè)模塊都用到了網(wǎng)絡(luò)基本配置,例如transport模塊和HTTP模塊。 節(jié)點(diǎn)級別的網(wǎng)絡(luò)配置可以用來設(shè)置所有基于網(wǎng)絡(luò)的模塊的通用配置(除了被每個(gè)模塊明確覆蓋的那些配置項(xiàng))。

network.bind_host用來設(shè)置綁定的ip地址, 默認(rèn)綁定anyLocalAddress?(0.0.0.0或者::0)。

network.publish_host配置其他節(jié)點(diǎn)和本節(jié)點(diǎn)通信的地址。 這個(gè)當(dāng)然不能是anyLocalAddress, 默認(rèn)是第一個(gè)非回環(huán)地址或者本機(jī)地址。

network.host設(shè)置是一個(gè)簡化設(shè)置, 它自動設(shè)置network.bind_host和network.publish_host為同一個(gè)值。

兩個(gè)設(shè)置都可以配置為主機(jī)ip地址或者主機(jī)名, 還可以設(shè)置為下表中列出來的值。

Logical Host Setting ValueDescription
local本機(jī)ip地址
_non_loopback_第一個(gè)非loopback地址
_non_loopback:ipv4_第一個(gè)非loopback的ipv4地址
_non_loopback:ipv6_第一個(gè)非loopback的ipv6地址
[networkInterface]指定網(wǎng)卡的IP地址. 例如?en0
[networkInterface]:ipv4指定網(wǎng)卡的IPv4地址. 例如?en0:ipv4
[networkInterface]:ipv6指定網(wǎng)卡的IPv6地址. 例如?en0:ipv6
_non_loopback:ipv6_第一個(gè)非loopback的ipv6地址

cloud-aws

如果安裝了cloud-aws插件, 下表列出來值也是有效的設(shè)置:

EC2 Host ValueDescription
ec2:privateIpv4The private IP address (ipv4) of the machine
ec2:privateDnsThe private host of the machines
ec2:publicIpv4The public IP address (ipv4) of the machine
ec2:publicDnsThe public host of the machines
ec2Less verbose option for the private ip address
ec2:privateIpLess verbose option for the private ip address
ec2:publicIpLess verbose option for the public ip address

tcp settings

任何使用TCP的組件 (比如HTTP, Transport和Memcached)共享下面的設(shè)置:

SettingDescription
network.tcp.no_delay啟用或禁用tcp no delay。 默認(rèn)是true.
network.tcp.keep_alive啟用或禁用tcp keep alive。 默認(rèn)不設(shè)置
network.tcp.reuse_address地址是否應(yīng)該被重用,在非windows的機(jī)器上默認(rèn)是true
network.tcp.send_buffer_sizetcp發(fā)送緩沖區(qū)的大小。 默認(rèn)不設(shè)置
network.tcp.receive_buffer_sizetcp接收緩沖區(qū)的大小。 默認(rèn)不設(shè)置

node

原文

ES可以設(shè)置一個(gè)節(jié)點(diǎn)是否在本地存儲數(shù)據(jù),存儲數(shù)據(jù)意味著不同索引的分片可以分配到這個(gè)節(jié)點(diǎn)上。 默認(rèn)每個(gè)節(jié)點(diǎn)都可以作為數(shù)據(jù)節(jié)點(diǎn)(data node),可以設(shè)置node.data為false來關(guān)閉。

這是一個(gè)很強(qiáng)大的配置, 可以很簡單的來創(chuàng)建一個(gè)智能負(fù)載均衡。

我們可以啟動一個(gè)數(shù)據(jù)節(jié)點(diǎn)的集群而不啟用http模塊, 這可以通過設(shè)置http.enabled為true做到, 這些節(jié)點(diǎn)通過transport模塊相互通信, 在集群的前端可以啟動一個(gè)和或者多個(gè)啟用了http模塊的非數(shù)據(jù)節(jié)點(diǎn), 所有的http通訊由這些非數(shù)據(jù)節(jié)點(diǎn)來執(zhí)行。

這樣做的好處是首先能夠創(chuàng)建一個(gè)智能負(fù)載均衡器。 這些非數(shù)據(jù)節(jié)點(diǎn)仍然是集群的一部分, 他們將請求重定向到那些有相關(guān)數(shù)據(jù)的節(jié)點(diǎn)上。 另一個(gè)好處是對于那些scatter/gather操作(比如search), 這些節(jié)點(diǎn)可以執(zhí)行一部分處理, 因?yàn)樗鼈儐觭catter處理并且執(zhí)行實(shí)際的gather過程。

這樣數(shù)據(jù)節(jié)點(diǎn)可以專注于索引和查詢這類大負(fù)載的工作,而不需要處理http請求, 占用網(wǎng)絡(luò)負(fù)載,或者執(zhí)行g(shù)ather過程。

plugins

原文

Plugins提供了以自定義的方式增強(qiáng)ES基本功能的途徑, 范圍包括添加自定義mapping類型, 自定義分詞, 原生腳本, 自定義discovery等等。

installing plugins

安裝插件可以手工將插件安裝包放到plugins目錄, 也可以用plugin腳本來安裝。 在github的elasticsearch能找到好幾個(gè)插件, 名字以"elasticsearch-"開頭。

從0.90.2開始, 插件可以通過執(zhí)行?plugin --install /<user/component>/的形式來安裝。 插件會從download.elasticsearch.org自動下載, 如果插件不存在的話, 就從maven(central and sonatype)下載。

注意, 如果插件放在maven central或者sonatype的話,?`是groupId,<user/component>是artifactId`。

對于以前的版本, 老的安裝方式是?plugin -install /<user/component>/

一個(gè)插件也可以直接通過指定它的URL來安裝, 例如

bin/plugin --url file://path/to/plugin --install plugin-name

或者對于老版本來說是

bin/plugin -url file://path/to/plugin -install plugin-name

從0.90.2開始, 插件的更新信息可以通過運(yùn)行?bin/plugin -h來獲得。

site plugins

插件可以包含一個(gè)站點(diǎn), 任何位于plugins目錄下的插件如果包含一個(gè)_site目錄, 目錄里的內(nèi)容就可以當(dāng)做靜態(tài)內(nèi)容通過/_plugin/[plugin_name]/url來訪問,在進(jìn)程已經(jīng)開始的情況下也可以向其添加內(nèi)容。

安裝的插件如果不包含任何java相關(guān)的內(nèi)容, 會被自動檢測為site插件, 內(nèi)容會被移動到_site目錄下。

安裝github托管的插件非常簡單, 比如運(yùn)行

#?From?0.90.2bin/plugin?--install?mobz/elasticsearch-headbin/plugin?--install?lukas-vlcek/bigdesk#?From?a?prior?versionbin/plugin?-install?mobz/elasticsearch-headbin/plugin?-install?lukas-vlcek/bigdesk

會自動安裝這兩個(gè)site插件,elasticsearch-head插件可以通過?http://localhost:9200/_plugin/head/訪問, bigdesk插件可以通過http://localhost:9200/_plugin/bigdesk/訪問。

mandatory plugins

如果你依賴一些插件, 你可以通過屬性plugin.mandatory來定義這些強(qiáng)制性(mandatory)插件, 下面是一個(gè)配置的例子:

plugin.mandatory:?mapper-attachments,lang-groovy

出于安全考慮, 如果mandatory插件沒有安裝, 節(jié)點(diǎn)不會啟動。

installed plugins

當(dāng)前已加載的插件列表可通過Node Info API獲得。

removing plugins

要?jiǎng)h除一個(gè)插件,可以手工將它從plugins目錄移除,也可以用plugin腳本。

刪除一個(gè)插件通常可以用下面的形式:

plugin?--remove

silent/verbose mode

運(yùn)行plugin腳本時(shí), 可以加--verbose參數(shù)獲得更多的信息(調(diào)試模式)。 相反的, 如果希望plugin腳本靜默與運(yùn)行可以用--silent選項(xiàng)。

注意, 退出碼可能是:

0:?everything?was?OK64:?unknown?command?or?incorrect?option?parameter74:?IO?error70:?other?errorsbin/plugin?--install?mobz/elasticsearch-head?--verboseplugin?--remove?head?--silent

scripting

scripting模塊可以用腳本來執(zhí)行自定義表達(dá)式, 比如可以用腳本將"script fields"作為查詢的一部分返回, 或者用來計(jì)算某個(gè)查詢的自定義評分等。

腳本模塊默認(rèn)用擴(kuò)展過的mvel作為腳本語言, 之所以用是因?yàn)樗浅?於矣闷饋砗芎唵?#xff0c; 大多數(shù)情況下需要的是簡單的表達(dá)式(比如數(shù)學(xué)方程式)。

其他lang插件可以提供執(zhí)行不同語言腳本的能力, 目前支持的腳本插件有javascript的lang-javascript,Groovy的lang-groovy, Python的lang-python。 所有可以用script參數(shù)的地方可以設(shè)置lang參數(shù)來定義腳本所用的語言。?lang的選項(xiàng)可以是mvel,?js,?groovy,?python, 和native。

default scripting language

默認(rèn)的腳本語言是(如果沒有指定lang參數(shù))mvel。 如果要修改默認(rèn)語言的話可以將設(shè)置script.default_lang為合適的語言。

preloaded scripts

腳本可以作為相關(guān)api的一部分, 也可以將腳本放到config/scripts來預(yù)加載這些腳本, 這樣用到這些腳本的地方可以直接引用腳本的名字而不用提供整個(gè)腳本, 這有助于減少客戶端和節(jié)點(diǎn)間的傳輸?shù)臄?shù)據(jù)量。

腳本的名字從其所在的目錄結(jié)構(gòu)繼承,不需要帶文件名的后綴, 例如被放在config/scripts/group1/group2/test.py的腳本會被命名為group1_group2_test。

disabling dynamic scripts

建議ES運(yùn)行在某個(gè)應(yīng)用或者代理的后端,這樣可以將ES和外部隔離, 如果用戶被授權(quán)運(yùn)行動態(tài)腳本(即使在search請求),那么他們就可以訪問ES所在的機(jī)器。

首先, 你不應(yīng)該用root用戶來運(yùn)行ES, 因?yàn)檫@樣會允許腳本在你的服務(wù)器上沒有限制的做任何事, 其次你不應(yīng)該直接將ES暴露給用戶訪問, 如果你打算直接將ES暴露給用戶, 你必須決定是否足夠信任他們在你的服務(wù)器上運(yùn)行腳本。 如果答案是不的話, 即使你有個(gè)代理僅允許GET請求, 你也應(yīng)該在每個(gè)節(jié)點(diǎn)的config/elasticsearch.yml加入如下設(shè)置來禁用動態(tài)腳本:

script.disable_dynamic:?true

這樣可以僅允許配置過的命名腳本或者通過插件注冊的原生Java腳本運(yùn)行, 防止用戶通過接口來運(yùn)行任意腳本。

native (java) scripts

即使mvel已經(jīng)相當(dāng)快了,注冊的原生java腳本還能執(zhí)行的更快。

實(shí)現(xiàn)NativeScriptFactory接口的腳本才會被執(zhí)行。 主要有兩種形式,一種是擴(kuò)展AbstractExecutableScript,一種是擴(kuò)展AbstractSearchScript(可能大多數(shù)用戶會選擇這種方式, 可以借助AbstractLongSearchScript,?AbstractDoubleSearchScript,?AbstractFloatSearchScript這幾個(gè)輔助類來實(shí)現(xiàn)擴(kuò)展)。

可以通過配置來注冊腳本, 例如:script.native.my.type設(shè)為sample.MyNativeScriptFactory將注冊一個(gè)名為my的腳本。 另一個(gè)途徑是插件中訪問ScriptModule的registerScript方法注冊腳本。

設(shè)置lang為native并且提供腳本的名字就可以執(zhí)行注冊的腳本。

注意, 腳本需要位于ES的classpath下, 一個(gè)簡單方法是在plugins目錄下創(chuàng)建一個(gè)目錄(選擇一個(gè)描述性的名字),將jar/classes文件放在這個(gè)目錄,他們就會被自動加載。

score

所有的腳本都可以在facets中使用, 可以通過doc.score訪問當(dāng)前文檔的評分。

document fields

大多數(shù)腳本都會用到document的字段,?doc['field_name']可以用來訪問document中的某個(gè)字段(document通常通過腳本的上下文傳給腳本)。 訪問document的字段非???#xff0c; 因?yàn)樗麄儠患虞d到內(nèi)存中(所有相關(guān)的字段值/token會被加載到內(nèi)存中)。

下表是能夠從字段上拿到的數(shù)據(jù):

ExpressionDescription
doc['field_name'].value字段的原生值, 比如,如果是字段short類型,就返回short類型的值
doc['field_name'].values字段的原生值的數(shù)組, 比如,如果字段是short類型,就返回short[]類型的數(shù)組。 記住,單個(gè)文檔中的一個(gè)字段可以有好幾個(gè)值,如果字段沒有值就返回空數(shù)組
doc['field_name'].emptyboolean值, 表明文檔的字段是否有值
doc['field_name'].multiValuedboolean值, 表明文檔的字段是否有多個(gè)值
doc['field_name'].latgeo point類型的維度值
doc['field_name'].longeo point類型的經(jīng)度值
doc['field_name'].latsgeo point類型的維度數(shù)組
doc['field_name'].lonsgeo point類型的經(jīng)度數(shù)組
doc['field_name'].distance(lat, lon)geo point類型的字段到給定坐標(biāo)的plane距離(單位是miles)
doc['field_name'].arcDistance(lat, lon)geo point類型的字段到給定坐標(biāo)的arc距離(單位是miles)
doc['field_name'].distanceInKm(lat, lon)geo point類型的字段到給定坐標(biāo)的plane距離(單位是km)
doc['field_name'].arcDistanceInKm(lat, lon)geo point類型的字段到給定坐標(biāo)的arc距離(單位是km)
doc['field_name'].geohashDistance(geohash)geo point類型的字段到給定geohash的距離(單位是miles)
doc['field_name'].geohashDistanceInKm(geohash)geo point類型的字段到給定geohash的距離(單位是km)

stored fields

執(zhí)行腳本時(shí)也可以訪問存儲的字段(Stored), 注意,因?yàn)樗麄儾粫挥涊d到內(nèi)存,所以訪問速度與訪問document字段相比慢很多。 可以用_fields['my_fields_name'].value或_fields['my_fields_name'].values的形式來訪問。

source field

執(zhí)行腳本時(shí)也可以獲取源字段(source)。 每個(gè)文檔的源字段會被加載,解析,然后提供給腳本計(jì)算。 可以通過上下文的_source來訪問源字段,例如_source.obj2.obj1.fields3。

mvel built in functions

以下是腳本中可以使用的內(nèi)置函數(shù):

FunctionDescription
time()The current time in milliseconds.
sin(a)Returns the trigonometric sine of an angle.
cos(a)Returns the trigonometric cosine of an angle.
tan(a)Returns the trigonometric tangent of an angle.
asin(a)Returns the arc sine of a value.
acos(a)Returns the arc cosine of a value.
atan(a)Returns the arc tangent of a value.
toRadians(angdeg)Converts an angle measured in degrees to an approximately equivalent angle measured in radians.
toDegrees(angrad)Converts an angle measured in radians to an approximately equivalent angle measured in degrees.
exp(a)Returns Euler’s number e raised to the power of value.
log(a)Returns the natural logarithm (base e) of a value.
log10(a)Returns the base 10 logarithm of a value.
sqrt(a)Returns the correctly rounded positive square root of a value.
cbrt(a)Returns the cube root of a double value.
IEEEremainder(f1, f2)Computes the remainder operation on two arguments as prescribed by the IEEE 754 standard.
ceil(a)Returns the smallest (closest to negative infinity) value that is greater than or equal to the argument and is equal to a mathematical integer.
floor(a)Returns the largest (closest to positive infinity) value that is less than or equal to the argument and is equal to a mathematical integer.
rint(a)Returns the value that is closest in value to the argument and is equal to a mathematical integer.
atan2(y, x)Returns the angle theta from the conversion of rectangular coordinates (x, y) to polar coordinates (r,theta).
pow(a, b)Returns the value of the first argument raised to the power of the second argument.
round(a)Returns the closest int to the argument.
random()Returns a random double value.
abs(a)Returns the absolute value of a value.
max(a, b)Returns the greater of two values.
min(a, b)Returns the smaller of two values.
ulp(d)Returns the size of an ulp of the argument.
signum(d)Returns the signum function of the argument.
sinh(x)Returns the hyperbolic sine of a value.
cosh(x)Returns the hyperbolic cosine of a value.
tanh(x)Returns the hyperbolic tangent of a value.
hypot(x, y)Returns sqrt(x2 + y2) without intermediate overflow or underflow.

arithmetic precision in mvel

用基于MVEL的腳本做兩個(gè)數(shù)的除法時(shí), 引擎遵循java的默認(rèn)規(guī)則, 這意味著如果你把兩個(gè)整數(shù)相除(你可以在mapping里配置字段為integer類型), 結(jié)果仍然是整數(shù)。 也就是說如果你在腳本中計(jì)算1/num這樣的表達(dá)式, 如果num是整數(shù)8的話,結(jié)果是0而不是你可能期望的0.125,你需要明確用doubel來指定精度以獲得期望的結(jié)果,用比如1.0/num。

thread pool

為了提高線程管理和內(nèi)存使用的效率, 一個(gè)節(jié)點(diǎn)會用到好幾個(gè)線程池, 比較重要的是以下幾個(gè)。

FunctionDescription
index用于index/delete, 默認(rèn)是fixed, 大小為# of available processors, queue_size是200
search用于count/search, 默認(rèn)是fixed, 大小為3x # of available processors, queue_size是1000
suggest用于suggest, 默認(rèn)是fixed, 大小為# of available processors, queue_size是1000
geting用于get, 默認(rèn)是fixed, 大小為# of available processors, queue_size是1000
bulk用于bulk, 默認(rèn)是fixed, 大小為# of available processors, queue_size是50
percolate用于percolate, 默認(rèn)是fixed, 大小為# of available processors, queue_size是1000
warmer用于warm-up, 默認(rèn)是scaling, keep-alive是5m
refresh用于refresh, 默認(rèn)是fixed, keep-alive是5m
percolate用于percolate, 默認(rèn)是fixed, 大小為# of available processors, queue_size是1000

可以通過設(shè)置線程池的類型以及參數(shù)來修改指定的線程池,下面的例子配置index線程池可以用更多的線程:

threadpool:????index:????????type:?fixed????????size:?30

注意, 可以通過Cluster Update Settings接口在運(yùn)行期間修改線程池的設(shè)置。

thread pool types

以下是線程池的類型以及對應(yīng)的參數(shù)。

cache

cache線程池是沒有大小限制的, 只要有請求就會啟動一個(gè)線程, 下面是設(shè)置的例子:

threadpool:????index:????????type:?cached

fixed

fixed線程池有固定的大小, 如果當(dāng)前沒有可用的線程時(shí),就把請求放到一個(gè)隊(duì)列里, 隊(duì)列可以設(shè)置大小。

size參數(shù)設(shè)置線程的數(shù)量, 默認(rèn)是cpu內(nèi)核數(shù)乘以5。

queue_size設(shè)置存放掛起請求的隊(duì)列的大小, 默認(rèn)是-1, 即沒有大小限制。 如果一個(gè)請求進(jìn)來而隊(duì)列已經(jīng)滿了的情況下, 這個(gè)請求會被舍棄。

配置例子如下:

threadpool:????index:????????type:?fixed????????size:?30????????queue_size:?1000

processors setting

ES會自動檢測處理器的數(shù)量, 并且會自動根據(jù)處理器的數(shù)量來設(shè)置線程池。 有時(shí)候可能檢測出來的處理器數(shù)量是錯(cuò)的, 這種情況下可以設(shè)置processors?來聲明處理器的數(shù)量。

可以用帶os參數(shù)的nodes info接口來檢查自動檢測出來的處理器數(shù)量。

thrift

thrift傳輸模塊允許通過thrift協(xié)議對外暴露REST接口, Thrift協(xié)議可以提供比http協(xié)議更好的性能。 因?yàn)閠hrift既提供了協(xié)議,也提供了傳輸?shù)膶?shí)現(xiàn)方式, 用起來應(yīng)該很簡單(盡管缺乏相關(guān)文檔)。

使用thrift需要安裝transport-thrift插件?。

thrift schema可以用來生成thrift的客戶端代碼。

thrift的相關(guān)配置如下:

SettingDescription
thrift.port綁定的端口, 默認(rèn)9500-9600
thrift.frame默認(rèn)-1, 即不分frame, 可以設(shè)置比較大的值來指定frame的大小(比如15mb)。

transport

傳輸模塊用于集群內(nèi)節(jié)點(diǎn)間的內(nèi)部通訊。 每次跨節(jié)點(diǎn)的調(diào)用都會用到transport模塊(比如某個(gè)節(jié)點(diǎn)接受http GET請求,實(shí)際執(zhí)行處理的是另一個(gè)持有數(shù)據(jù)的節(jié)點(diǎn))。

transport機(jī)制是完全異步的, 即等待響應(yīng)時(shí)不會阻塞線程, 異步通信的好處首先是解決了C10k問題, 另外也是scatter(broadcast)/gather操作(比如搜索)的方案。

tcp transport

TCP transport是用TCP實(shí)現(xiàn)傳輸模塊, 允許如下設(shè)置:

SettingDescription
transport.tcp.port綁定的端口范圍, 默認(rèn)9300-9400
transport.tcp.connect_timeoutsocket鏈接的超時(shí)時(shí)間, 默認(rèn)2s
transport.tcp.compress設(shè)置為true可以啟用壓縮(LZF), 默認(rèn)是false。

tcp transport共享通用網(wǎng)絡(luò)設(shè)置。

local transport

這在JVM內(nèi)做集成測試時(shí)非常有用。 當(dāng)使用NodeBuilder#local(true)時(shí)會自動啟用。

?

補(bǔ)充說明:

Gateway

Gateway是一種存儲集群中各節(jié)點(diǎn)元數(shù)據(jù)(meta data)的狀態(tài)方式,這里的元數(shù)據(jù)主要用來記錄所有的索引在創(chuàng)建時(shí)各自的設(shè)置和明確的類型映射。每次當(dāng)元數(shù)據(jù)改變,比如一個(gè)索引被加入或被刪除,這些變化都會通過gateway存儲起來。當(dāng)集群啟動時(shí),這些狀態(tài)將會從gateway中讀取并應(yīng)用。

  • gateway.type

  • gateway類型,默認(rèn)是local,也是es官方強(qiáng)烈建議的。

  • gateway.recover_after_nodes

  • 在多少個(gè)節(jié)點(diǎn)啟動后,允許數(shù)據(jù)恢復(fù)進(jìn)程啟動,默認(rèn)是1

  • gateway.recover_after_time

  • 設(shè)置數(shù)據(jù)恢復(fù)進(jìn)程初始化的超時(shí)時(shí)間,默認(rèn)是5分鐘

  • gateway.expected_nodes

  • 設(shè)置在集群中的多少個(gè)節(jié)點(diǎn)啟動后馬上開始數(shù)據(jù)恢復(fù)進(jìn)程(不用等到gateway.recover_after_time這個(gè)屬性設(shè)置的時(shí)間到)

    ?? Recovery Throttling

    這里的設(shè)置是用來控制分片分配的進(jìn)程,當(dāng)各節(jié)點(diǎn)間進(jìn)行初始化恢復(fù)、索引拷貝分配、再次負(fù)載均衡,或再增加或去掉節(jié)點(diǎn)的時(shí)候。

  • cluster.routing.allocation.node_initial_primaries_recoveries

  • 初始化數(shù)據(jù)恢復(fù)時(shí),并發(fā)恢復(fù)線程的個(gè)數(shù),默認(rèn)為4。

  • cluster.routing.allocation.node_concurrent_recoveries

  • 添加刪除節(jié)點(diǎn)或負(fù)載均衡時(shí)并發(fā)恢復(fù)線程的個(gè)數(shù),默認(rèn)為4

  • indices.recovery.max_size_per_sec

  • 設(shè)置數(shù)據(jù)恢復(fù)時(shí)限制的帶寬,默認(rèn)為0,表示無限制。

  • indices.recovery.concurrent_streams

  • 這個(gè)參數(shù)來限制從其它分片恢復(fù)數(shù)據(jù)時(shí)最大同時(shí)打開并發(fā)流的個(gè)數(shù),默認(rèn)為5

    ?? Discovery

  • discovery.zen.minimum_master_nodes

  • 設(shè)置這個(gè)參數(shù)來保證集群中的節(jié)點(diǎn)可以知道其它N個(gè)有master資格的節(jié)點(diǎn)。默認(rèn)為1,對于大的集群來說,可以設(shè)置大一點(diǎn)的值(2-4)。

  • discovery.zen.ping.timeout

  • 設(shè)置集群中自動發(fā)現(xiàn)其它節(jié)點(diǎn)時(shí)ping連接超時(shí)時(shí)間,默認(rèn)為3秒,對于比較差的網(wǎng)絡(luò)環(huán)境可以高點(diǎn)的值來防止自動發(fā)現(xiàn)時(shí)出錯(cuò)

  • discovery.zen.ping.multicast.enabled

  • 設(shè)置是否打開多播來發(fā)現(xiàn)來發(fā)現(xiàn)節(jié)點(diǎn),默認(rèn)是true

  • discovery.zen.ping.unicast.hosts

  • 設(shè)置集群中master節(jié)點(diǎn)的初始列表,可以通過這些節(jié)點(diǎn)來自動發(fā)現(xiàn)新加入集群的節(jié)點(diǎn)。

    轉(zhuǎn)載于:https://my.oschina.net/u/1024514/blog/467761

    總結(jié)

    以上是生活随笔為你收集整理的elasticsearch文档-modules的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。