elasticsearch - 如何在 Elasticsearch 7 NEST 7 中设置“max_result_window”
问题描述
在默认的弹性搜索中,只返回 10k 个结果。但我需要转到超过 10k 个结果的最后一页。
我做了一些尝试并通过设置“max_result_window”找到了解决方案:100000 我在 Kibana 中执行它,甚至超过 5000 页在此设置后工作正常。
PUT jm-stage-products/_settings
{
"max_result_window" : 100000
}
现在,当我在源代码中创建索引时,我需要包含此设置。但我找不到方法来做到这一点。这是我的索引创建功能。我应该如何设置“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";
}
}
解决方案
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)));
推荐阅读
- elasticsearch - Elasticsearch 无痛查询异常
- spring-boot - 突然得到“LoggerFactory 不是 Logback LoggerContext 但 Logback 在类路径上。” 并且无法运行
- mongodb - 从 mongodb 的嵌套数组中仅检索匹配的对象
- c# - C# Selenium Firefox - 错误异常“浏览上下文已被丢弃”
- cmake - CMAKE 使用 MinGW 构建 gui 应用程序
- mysql - SQL 从两个表中选择,如果 WHERE 子句为 false,则获取列的空值
- fortran - 可分配字符组件的可分配向量的 Coarray 派生类型
- java - 使用排序和随机播放方法制作动态数组,两种方法都无法正常工作
- java - Maven 在命令行中找不到 org.codehaus.mojo:exec-maven-plugin
- c# - 来自 Include 的 EF Core 查询,但无需返回结果