【发布时间】:2019-01-11 16:18:10
【问题描述】:
我的 ES 文档看起来像这样:
{
"auctionOn": "2018-01-01",
"inspections: [
{
"startsOn": "2018-01-02 09:00",
"endsOn": "2018-01-02 10:00"
}
]
}
我需要从一次搜索(或多次搜索)中得到以下答案
- 未来(例如 > 现在)具有
auctionOn的文档数量 - 未来(例如 > 现在)具有
inspection.startsOn的文档数量 - 接下来 7 天的日期直方图(日期细分),其中包含当天带有
auctionOn的文档数 - 接下来 7 天的日期直方图(日期细分),其中包含当天带有
inspection.startsOn的文档数
所以,我试图弄清楚如何有效地获得这些答案。我知道我可以/应该测试所有不同的方法,但我对 ES 比较陌生,所以说起来容易做起来难。
有人可以就如何获得这 4 个值给我一个建议(或者最好是一个查询)吗?
我的想法:
查询所有在未来进行检查/拍卖的文件。为拍卖和检查创建过滤到未来 7 天的日期直方图聚合。使用范围聚合来获取具有拍卖/检查 > 今天的文档数量。 优点:一次搜索所有答案。缺点:要汇总大量文档?
-
创建单独的搜索(例如 msearch):
- 查询未来 7 天内检查的所有文档。按天汇总。
- 查询未来 7 天内拍卖的所有文档。按天汇总。
- 查询所有将来需要检查的文档。使用点击数获得总数
- 查询所有在未来进行拍卖的文档。使用点击数来获得总数。 优点:查询更简单.. 更多缓存命中?缺点:4 次单独搜索。
有人可以指导我正确的道路,并给我有关如何进行查询/聚合的提示吗?
谢谢
【问题讨论】:
-
致因“过于宽泛”而投票关闭的人,想解释一下如何?我认为这个问题非常具体..
标签: elasticsearch elasticsearch-aggregation