有关ElasticSearch查询设计的建议

时间:2019-01-11 04:57:02

标签: elasticsearch elasticsearch-aggregation

我有如下的ES文档:

{
   "auctionOn": "2018-01-01",
   "inspections: [
    {
       "startsOn": "2018-01-02 09:00",
       "endsOn": "2018-01-02 10:00"
    }
    ]
}

我需要从一个搜索(或多个搜索)中获得以下答案

  1. 将来(例如,现在)带有auctionOn的文档数
  2. 将来(例如,现在)带有inspection.startsOn的文档数
  3. 接下来7天的日期直方图(按天细分),其中#个文件在该天带有auctionOn
  4. 接下来7天的日期直方图(按天细分),其中#个文件在该天带有inspection.startsOn

因此,我正在尝试找出如何有效地获得这些答案的方法。我知道我可以/应该测试所有不同的方法,但是我对ES还是比较陌生,说起来容易做起来难。

有人可以给我关于如何获得这四个值的建议(或者理想情况下是查询)吗?

我的想法:

  1. 查询将来带有检查/拍卖的所有文档。创建日期直方图聚合,过滤后的7天用于拍卖和检查。使用范围汇总可获取具有“拍卖/检验”>今天的文档数量。 优点:一种搜索所有答案。缺点:要汇总的文档很多?

  2. 为以下各项创建单独的搜索(例如msearch)

    • 在接下来的7天中对所有文档进行检查。按天汇总。
    • 在接下来的7天内通过拍卖查询所有文档。按天汇总。
    • 在将来进行检查时查询所有文档。使用点击次数获得总计
    • 在将来通过拍卖查询所有文档。使用点击数获得总计。 优点:查询更简单..更多缓存命中率?缺点:4个单独的搜索。

有人可以引导我走正确的道路,并提示我如何进行查询/聚合吗?

谢谢

1 个答案:

答案 0 :(得分:-1)

  1. 在字段 auctionOn 上使用 range 查询,设置为当前日期,日期为空。
  2. 如上所述,在字段 inspection.startsOn 上的嵌套查询中使用
  3. range 查询。
  4. 使用日期直方图汇总,并使用时间间隔作为
  5. 与3相同),但在嵌套聚合内部
  6. 您可以在一个查询中调整所有这些条件。