【问题标题】:Why adding a date range filter disables aggs?为什么添加日期范围过滤器会禁用 aggs?
【发布时间】:2016-02-19 17:07:31
【问题描述】:

我有这种类型的文件

{
  "host-ip": "192.168.0.1",
  "HOST_END_iso": "2016-02-19T09:30:41+01:00"
}

我成功查询 ES 得到一个随机条目和 host-ip 的聚合

{
   "query": {
      "match_all": {}
   },
   "size": 1,
   "aggs": {
      "rating": {
         "terms": {
            "field": "host-ip",
            "size": 0,
            "shard_size": 0
         }
      }
   }
}

我现在想过滤结果并获取两个日期之间的文档。 query 部分变得更加复杂:

{
   "query": {
      "filtered": {
         "filter": {
            "query": {
               "match_all": {}
            },
            "terms": {
               "range": {
                  "HOST_END_iso": {
                     "gt": "2015-02-19T09:30:41+01:00",
                     "lt": "2016-02-19T09:30:41+01:00"
                  }
               }
            }
         }
      },
      "size": 1
   },
   "aggs": {
      "rating": {
         "terms": {
            "field": "host-ip",
            "size": 0,
            "shard_size": 0
         }
      }
   }
}

返回一条记录,但没有聚合。为什么?

请注意,我必须将限制返回元素数量的size 移动到第一个query 的范围内。 我不明白我为什么需要这样做:如果我将其保留在与queryaggs 相同的级别(就像在第一个-successful- 示例中一样),我将不再受到限制到 1 个元素,但我得到默认的 10(所以 size 没有被考虑在内,我仍然没有得到 aggs)

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您的查询在很多地方都是错误的:这里是正确的

    {
      "size": 1,
      "query": {
        "filtered": {
          "filter": {
            "range": {
              "HOST_END_iso": {
                "gte": "2015-02-19T09:30:41+01:00",
                "lte": "2016-02-19T09:30:41+01:00"
              }
            }
          }
        }
      },
      "aggs": {
        "rating": {
          "terms": {
            "field": "host-ip",
            "size": 0,
            "shard_size": 0
          }
        }
      }
    }
    

    主要问题是terms/range 过滤器,您需要其中之一但不能同时使用两者。

    【讨论】:

    • 谢谢。在文档中来回弹跳之后,我最终 - 正如你提到的那样 - 将 termsrange 混合在一起,而它们在 query 中处于同一级别。
    • 酷,很高兴你想通了!
    • 我没有弄明白。感谢您的回答,我明白我错了:)
    • 好吧,我很高兴能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多