如何解决是否有一个 API 可以根据您的查询搜索返回多少结果?
是否有一个 api 可以根据您的查询搜索返回多少结果/日志?或者像 nesT 的一个内置功能,它会告诉你有多少结果,比如 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 个结果进行分页时数组是空的。 http://sqlfiddle.com/#!9/32ca4/18
因此,如果有一个 api 或功能可以让您知道基于您的索引有多少结果,或者您是否像我上面那样进行每月查询搜索;知道这个数字后,我可以创建一个 forloop 来对每个文档进行分页,比如我可以查看前 10,000 次点击,然后是接下来的 10,000 次点击的下一次迭代,依此类推。希望这是有道理的,如果需要,我会澄清。
解决方法
是否有一个 API 可以根据您的查询搜索返回多少结果?
我不知道任何会返回精确计数的 ES API。在高值时,它变得非常近似。
分页超过 10,000 个结果时,数组为空。
首先,返回超过 10k 的搜索结果是非常不寻常的。听起来您正在尝试将 ElasticSearch 用作数据库,您可以为某些事情做,但不要依赖于 ACID 或类似的东西。
要在 ElasticSearch 中翻阅大型结果集,请创建一个 point in time 并将其传递给 search API with the search_after
parameter。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。