如何在 Elasticsearch 7 NEST 7 中设置 "max_result_window"
How to set "max_result_window" in Elasticsearch 7 NEST 7
在默认弹性搜索中只有 returns 10k 个结果。但我需要转到超过 10k 个结果的最后一页。
我做了一些工作,并通过设置 "max_result_window" 找到了解决方案:100000
我在 Kibana 中执行它,甚至超过 x 5000pages 在此设置后工作正常。
PUT jm-stage-products/_settings
{
"max_result_window" : 100000
}
现在我需要在我的源代码中创建索引时包含此设置code.But我找不到执行此操作的方法。
这是我的索引创建函数。我应该如何设置“max_result_window”:100000?
public string InitIndexing()
{
var indexName = string.Format(_config.ElasticIndexName, _config.HostingEnvironment);
//-----------------------------------------------------------
if (!_client.Indices.Exists(indexName).Exists)
{
//----------------------------------------------
var indexSettings = new IndexSettings
{
NumberOfReplicas = 0, // If this is set to 1 or more, then the index becomes yellow.
NumberOfShards = 5,
};
var indexConfig = new IndexState
{
Settings = indexSettings
};
var createIndexResponses = _client.Indices.Create(indexName, c => c
.InitializeUsing(indexConfig)
.Map<ElasticIndexGroupProduct>(m => m.AutoMap())
);
return createIndexResponses.DebugInformation;
}
else
{
return $"{_config.ElasticIndexName} already exists";
}
}
我不知道 nest
但在创建索引和
下面是 REST API 来说明这一点。
PUT HTTP://localhost:9200/your-index-name/
{
"settings": {
"max_result_window" : 1000000 // note this
},
"mappings": {
"properties": {
"first_name": {
"type": "text"
},
"last_name": {
"type": "text"
},
"country": {
"type": "text"
},
"state": {
"type": "text"
},
"city": {
"type": "text"
}
}
}
}
检查是否在index-settings
中创建成功
获取 HTTP://localhost:9200/your-index-name/_settings
{
"so_1": {
"settings": {
"index": {
"number_of_shards": "1",
"provided_name": "so_1",
"max_result_window": "1000000", // note this
"creation_date": "1601273239277",
"number_of_replicas": "1",
"uuid": "eHBxaGf2TBG9GdmG5bvwkQ",
"version": {
"created": "7080099"
}
}
}
}
}
您可以使用以下代码段创建具有 max_result_window
设置的索引:
var createIndexResponse = await elasticClient.Indices.CreateAsync("index_name", c => c
.Settings(s => s
.Setting(UpdatableIndexSettings.MaxResultWindow, 100000)))
可以使用这种流利的语法更新已经存在的索引:
await elasticClient.Indices.UpdateSettingsAsync("index_name", s => s
.IndexSettings(i => i.Setting(UpdatableIndexSettings.MaxResultWindow, 100000)));
在默认弹性搜索中只有 returns 10k 个结果。但我需要转到超过 10k 个结果的最后一页。
我做了一些工作,并通过设置 "max_result_window" 找到了解决方案:100000 我在 Kibana 中执行它,甚至超过 x 5000pages 在此设置后工作正常。
PUT jm-stage-products/_settings
{
"max_result_window" : 100000
}
现在我需要在我的源代码中创建索引时包含此设置code.But我找不到执行此操作的方法。 这是我的索引创建函数。我应该如何设置“max_result_window”:100000?
public string InitIndexing()
{
var indexName = string.Format(_config.ElasticIndexName, _config.HostingEnvironment);
//-----------------------------------------------------------
if (!_client.Indices.Exists(indexName).Exists)
{
//----------------------------------------------
var indexSettings = new IndexSettings
{
NumberOfReplicas = 0, // If this is set to 1 or more, then the index becomes yellow.
NumberOfShards = 5,
};
var indexConfig = new IndexState
{
Settings = indexSettings
};
var createIndexResponses = _client.Indices.Create(indexName, c => c
.InitializeUsing(indexConfig)
.Map<ElasticIndexGroupProduct>(m => m.AutoMap())
);
return createIndexResponses.DebugInformation;
}
else
{
return $"{_config.ElasticIndexName} already exists";
}
}
我不知道 nest
但在创建索引和
下面是 REST API 来说明这一点。
PUT HTTP://localhost:9200/your-index-name/
{
"settings": {
"max_result_window" : 1000000 // note this
},
"mappings": {
"properties": {
"first_name": {
"type": "text"
},
"last_name": {
"type": "text"
},
"country": {
"type": "text"
},
"state": {
"type": "text"
},
"city": {
"type": "text"
}
}
}
}
检查是否在index-settings
中创建成功获取 HTTP://localhost:9200/your-index-name/_settings
{
"so_1": {
"settings": {
"index": {
"number_of_shards": "1",
"provided_name": "so_1",
"max_result_window": "1000000", // note this
"creation_date": "1601273239277",
"number_of_replicas": "1",
"uuid": "eHBxaGf2TBG9GdmG5bvwkQ",
"version": {
"created": "7080099"
}
}
}
}
}
您可以使用以下代码段创建具有 max_result_window
设置的索引:
var createIndexResponse = await elasticClient.Indices.CreateAsync("index_name", c => c
.Settings(s => s
.Setting(UpdatableIndexSettings.MaxResultWindow, 100000)))
可以使用这种流利的语法更新已经存在的索引:
await elasticClient.Indices.UpdateSettingsAsync("index_name", s => s
.IndexSettings(i => i.Setting(UpdatableIndexSettings.MaxResultWindow, 100000)));