【问题标题】:Elasticsearch aggregation using a bool filter使用布尔过滤器进行 Elasticsearch 聚合
【发布时间】:2017-04-20 17:35:30
【问题描述】:

我有以下查询,它在 Elasticsearch 1.x 上运行良好,但在 2.x 上不起作用(我得到 doc_count: 0),因为 bool filter 已被弃用。我不太清楚如何使用新的Bool Query 重写此查询。

{
  "aggregations": {
    "events_per_period": {
      "filter": {
        "bool": {
          "must": [
            {
              "terms": {
                "message.facility": [
                  "facility1",
                  "facility2",
                  "facility3"
                ]
              }
            }
          ]
        }
      }
    }
  },
  "size": 0
}

非常感谢任何帮助。

【问题讨论】:

  • 您之前的查询是什么?
  • @AndreiStefan - 我上面的查询是我在 1.x 中返回 doc_count > 0 但在 2.x 中返回 0 的查询。
  • 能否也分享message字段的映射和一个示例文档?
  • 消息字段的映射,是嵌套字段还是对象?

标签: elasticsearch


【解决方案1】:

我认为您可能希望使用过滤器对多字段进行聚合:- 在这里,我假设在 facility1 和 facility2 上过滤 id 和聚合。

{
    "_source":false,
    "query": {
        "match": {
            "id": "value"
        }
    },
    "aggregations": {
        "byFacility1": {
            "terms": {
                "field": "facility1"
            },
            "aggs": {
                "byFacility2": {
                    "terms": {
                        "field": "facility2"
                    }
                }
            }
        }
    }
}

如果你想聚合三个字段,请检查link。 对于java实现link2

【讨论】:

    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2014-02-02
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    相关资源
    最近更新 更多