2016-11-04 79 views
0

我將我的Nest和Elastic Search NuGet包從1.7.1升級到2.4.6。一切似乎都行得通,但我擔心的一件事是創建索引的位置。從1.x升級後的Nest/Elastic Search 2.x中的CreateIndex

我曾經在舊的1.x世界中設置了兩個設置,我無法弄清楚如何設置2.x世界。創建索引,從這個去:

ixSettings.NumberOfReplicas = 1; 
ixSettings.NumberOfShards = 5; 
ixSettings.Settings.Add("merge.policy.merge_factor", "10"); 
ixSettings.Settings.Add("search.slowlog.threshold.fetch.warn", "1s"); 

EsClient.CreateIndex(c => c 
    .Index(ES_Index) 
    .InitializeUsing(ixSettings) 
); 

這樣:

EsClient.CreateIndex(ES_Index, c => c 
    .Settings(s => s 
     .NumberOfReplicas(1) 
     .NumberOfShards(5))); 

var mapResponse = EsClient.Map<WebPage>(m => m.AutoMap()); //apply the index mapping 

我認爲合併策略並獲取警告設置了一些我從彈性搜索了「入門指南」。 「merge_factor」默認爲10,所以這並不重要,我猜「search.slowlog.threshold.fetch.warn」是一個日誌事件。

我的問題是:

  1. 我在我的新代碼,我確定那些離開了我創建索引?
  2. 如果我想要如何設置它們?

回答

2

索引創建時的設置已得到改進,可爲創建索引時提供的設置提供流暢的API和對象初始化程序語法。

您可以設置任意鍵/值與.Setting()

client.CreateIndex("index-name", c => c 
    .Settings(s => s 
     .NumberOfReplicas(1) 
     .NumberOfShards(5) 
     .Setting("merge.policy.merge_factor", "10") 
     .Setting("search.slowlog.threshold.fetch.warn", "1s") 
    ) 
); 

但要注意的是merge.policy.merge_factor is removed from Elasticsearch 2.0+。你可以找到所支持的

client.CreateIndex("index-name", c => c 
    .Settings(s => s 
     .NumberOfReplicas(1) 
     .NumberOfShards(5) 
     .Merge(m => m 
      .Policy(mp => mp 
       . // See which settings are available here 
      ) 
     ) 
    ) 
); 

同樣的設置,search.slowlog.threshold.fetch.warn可以

client.CreateIndex("index-name", c => c 
    .Settings(s => s 
     .NumberOfReplicas(1) 
     .NumberOfShards(5) 
     .SlowLog(sl => sl 
      .Search(ssl => ssl 
       .Fetch(f => f 
        .ThresholdWarn("1s") 
       ) 
      ) 
     ) 
    ) 
); 

產生以下要求進行設置:

PUT http://localhost:9200/index-name 
{ 
    "settings": { 
    "index.number_of_replicas": 1, 
    "index.search.slowlog.threshold.fetch.warn": "1s", 
    "index.number_of_shards": 5 
    } 
} 
+0

非常好,謝謝。 – FirstDivision