【问题标题】:ELASTICSEARCH - How can i get an aggregation in a boolean field?ELASTICSEARCH - 如何在布尔字段中获取聚合?
【发布时间】:2020-07-26 06:00:13
【问题描述】:

我想在布尔字段中获取聚合,但是输出是错误的:

查询:

""" {

"size": 0,
  "aggs": {
    "RecentCreated": {
      "terms": {
        "field": "created_at.keyword",
        "order": {
          "_key": "desc"
        },
        "size": 1
      },
      "aggs": {
        "nestedData": {
          "nested": {
            "path": "data.add.serv"
          },
          "aggs": {
            "NAME": {
              "terms": {
                "field": "data.add.serv.beast"
                , "include": true
              }
            }
          }
        }
      }
    }
  }
}

"""

错误:

"type" : "x_content_parse_exception", "reason" : "[terms] include 不支持以下类型的值:VALUE_BOOLEAN"

我一直在阅读,可以通过脚本将真值转换为1来获取聚合中的计数,但是我无法得到真值的结果 如何获得具有真值的布尔字段的计数?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    我认为您可能想要做的是在嵌套文档上使用 filter 聚合而不是 terms 聚合。所以简而言之,改变你的查询:

    "aggs": {
      "NAME": {
        "terms": {
          "field": "data.add.serv.beast",
          "include": true
        }
      }
    }
    

    "aggs": {
      "NAME": {
        "filter": {
          "term": {
            "data.add.serv.beast": true
          }
        }
      }
    }
    

    我对嵌套聚合不太熟悉,因此我的语法可能仍然存在错误。要点是使用filter 聚合而不是terms,希望这对您有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      相关资源
      最近更新 更多