从 1.x 升级后,在 Nest / Elastic Search 2.x 中创建索引
CreateIndex in Nest / Elastic Search 2.x after upgrade from 1.x
我将我的 Nest 和 Elastic Search NuGet 包从 1.7.1 升级到了 2.4.6。一切似乎都正常,但我担心的一件事是创建索引的位置。
有两个设置是我在旧 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
我认为合并策略和获取警告设置是我从 Elastic Search "Getting Started Guide" 获得的。 "merge_factor" 默认为 10,所以这无关紧要,我猜 "search.slowlog.threshold.fetch.warn" 是一个日志记录的东西。
我的问题是:
- 我可以在新代码中将它们从索引创建中删除吗?
- 如果我想如何设置它们?
索引创建时的设置已得到改进,可为索引创建时允许的设置提供流畅的 API 和对象初始化语法。
您可以设置任何 key/value 和 .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
}
}
我将我的 Nest 和 Elastic Search NuGet 包从 1.7.1 升级到了 2.4.6。一切似乎都正常,但我担心的一件事是创建索引的位置。
有两个设置是我在旧 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
我认为合并策略和获取警告设置是我从 Elastic Search "Getting Started Guide" 获得的。 "merge_factor" 默认为 10,所以这无关紧要,我猜 "search.slowlog.threshold.fetch.warn" 是一个日志记录的东西。
我的问题是:
- 我可以在新代码中将它们从索引创建中删除吗?
- 如果我想如何设置它们?
索引创建时的设置已得到改进,可为索引创建时允许的设置提供流畅的 API 和对象初始化语法。
您可以设置任何 key/value 和 .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
}
}