2016-06-07 109 views

回答

2

index.開頭的任何Elasticsearch設置都是作爲索引級設置,這意味着每個索引(例如,在模板中)。任何以indices.開頭的設置都應該是一個集羣級設置,這意味着elasticsearch.yml

此前Elasticsearch 5.0(發佈本文寫作時),你可以在elasticsearch.yml設置index.型設置,但這是trappy的行爲,因爲你可能會忘記它設置在一個文件中。

所以,在索引設置進行設置:

PUT /my-index/_settings 
{ 
    "index.merge.scheduler.max_thread_count" : 1 
} 

你可以設定所有現有指數:

PUT /_settings 
{ 
    "index.merge.scheduler.max_thread_count" : 1 
} 

一個常見的問題是:爲什麼這不就是一個全球性的設置?它種的是因爲你設置一個全球性的模板來控制這些類型的屬性:由作爲一個指數級的設置

PUT /_template/my_default_settings 
{ 
    "template" : "*", 
    "settings" : { 
    "number_of_shards" : 2, 
    "index.merge.scheduler.max_thread_count" : 1 
    } 
} 

但更重要的是,它使您能夠動態地改變它的節點上的硬件改動該指數依然存在。例如,當創建索引時,它最有可能需要寫入最多,但隨着時間的推移,它可能不會被頻繁寫入,因此它可以移動到更大但合適的調度程序需要的更慢的節點上被控制。在這樣的例子中,你只需要在移動後設置線程數,從而使理論上更快(但更小)的機器以儘可能快的速度合併。

+0

謝謝。在這裏也可以找到https://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-performance.html 如果您使用的是旋轉介質而不是SSD,則需要將其添加到elasticsearch中。 yml: index.merge.scheduler.max_thread_count:1 –