c# - 是否有一个 API 可以根据您的查询搜索返回多少个结果?
问题描述
是否有一个 API 可以根据您的查询搜索返回多少个结果/日志?或者像 NEST 的内置功能,它会告诉你有多少结果,比如 ie count
?因为我有一个 NEST 查询搜索,它将执行以下操作:
var response = await _elasticClient.SearchAsync<EsSource>(s => s
.Size(3000) // must see about this
.Source(src => src.Includes(i => i
.Fields(f => f.timestamp,
fields => fields.messageTemplate,
fields => fields.message)))
.Index("customer-simulation-es-app-logs*")
.Query(q => +q
.DateRange(dr => dr
.Field("@timestamp")
.GreaterThanOrEquals("2021-06-07T17:13:54.414-05:00")
.LessThanOrEquals(DateTime.Now))));
但我意识到搜索 api 不能超过 10,000 个结果,因为当您分页超过 10,000 个结果时数组是空的。搜索接口
因此,如果有一个 api 或一个功能可以让您知道基于您的索引有多少结果,或者您是否像我上面所说的那样进行每月查询搜索;知道这个数字后,我可以创建一个 forloop 来对每个文档进行分页,比如我可以查看前 10,000 个点击,然后为接下来的 10,000 个点击进行下一次迭代,依此类推。希望这是有道理的,如果需要,我会澄清。
解决方案
是否有一个 API 可以根据您的查询搜索返回多少个结果?
我不知道有任何 ES API 会返回准确的计数。在高值时,它变得非常近似。
当您分页超过 10,000 个结果时,数组为空。
首先,返回 >10k 的搜索结果是非常不寻常的。听起来您正在尝试将 ElasticSearch 用作数据库,您可以做一些事情,但不要依赖 ACID 或类似的东西。
要在 ElasticSearch 中对大型结果集进行分页,请创建一个时间点并使用参数将其传递给搜索 APIsearch_after
。
推荐阅读
- git - 如何将不同的已完成功能合并到 master 中?
- html - 如何在桌面上的 WhatsApp 网页上和手机上的 WhatsApp 应用程序上共享 WhatsApp
- swiftui - CoreData 和 FetchRequest,ForEach 问题和“无法调用初始化程序”
- python-3.x - 如何搜索多个电子邮件地址
- bash - 如何从 Atom 编辑器运行 MATLAB 脚本
- angular - 是否可以为 mat-tree 设置动画?(角材料)
- maven - 项目 org.wso2.carbon.apimgt.publisher.feature 的命令执行失败
- mysql - 一般错误:1364 禁用 STRICT_TRANS_TABLES
- mongodb - 如何在更新时重写模型中的嵌套对象
- c# - ASP.NET Core 中 Redis 中频道的订阅方法