【问题标题】:elasticsearch aggregation with date comparision and calcul具有日期比较和计算的弹性搜索聚合
【发布时间】:2016-03-03 17:07:42
【问题描述】:

嗨,我对弹性搜索有点陌生。我需要使用日期比较和动态范围过滤器进行聚合。

就像我需要在 created_at 文档比他们的 Identification_date 早 1 周时获取文档计数。

所以我尝试了类似的方法,但我的日期参数似乎未使用,实际上更改它永远不会改变我的结果。

       "aggs": {
            "identified": {
                "terms": { 
                    "script": "doc['created_at'].value > (doc['identification_date'].value - diff_date) 
                               && doc['created_at'].value < doc['identification_date'].value",
                    "params": {
                        "diff_date": 604800
                    }
                }
            }
        }

感谢您抽出宝贵时间提供帮助。

【问题讨论】:

  • 对于后来的人,我发现弹性搜索日期的计算应该以微秒为单位,所以我只需要 diff_date 为 604800000

标签: elasticsearch elasticsearch-dsl elasticsearch-aggregation


【解决方案1】:

因为在抽象级别上,您只希望在某个日期字段上创建 7 天前的文档计数。如果您不想在某些字段上进一步对结果集进行分组,则不需要为此聚合。只需您可以a)在您的日期字段上使用范围过滤器查询

{
    "range" : {
        "date" : {
            "gte" : "now-7d/d",
            "lt" :  "now"
        }
    }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html

【讨论】:

  • 实际上不是因为它是更大查询的一部分。并且范围聚合没有显示与作为主要信息的 Identification_date 的比较。不过还是谢谢你的建议:)
  • 那么您可以在聚合中一起使用过滤范围/聚合和术语聚合。过滤聚合将是一个范围过滤器,术语聚合器将聚合您在日期字段上的文档。
  • 或者,如果您想要更好的方法,请在日期字段上使用 date_histogram 聚合并在日期范围内定义存储桶。
猜你喜欢
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多