2016-11-04 46 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