【问题标题】:Need Explanation on ElasticSearch Filters Aggregation需要说明 ElasticSearch 过滤器聚合
【发布时间】:2015-09-10 10:36:45
【问题描述】:

我试图理解 ElasticSearch 中过滤器聚合的语法,但我很困惑。文档中给出的示例是这样的:

{
  "aggs" : {
    "messages" : {
      "filters" : {
        "filters" : {
          "errors" :   { "term" : { "body" : "error"   }},
          "warnings" : { "term" : { "body" : "warning" }}
        }
      },
      "aggs" : {
        "monthly" : {
          "histogram" : {
            "field" : "timestamp",
            "interval" : "1M"
          }
        }
      }
    }
  }
}

我了解以下内容:

  • “aggs”定义聚合块(它是“聚合”的快捷方式)。可以看出,示例中实际上存在嵌套聚合。
  • “messages”是用户自定义的聚合块名称。
  • “errors”和“warnings”是用户定义的过滤器名称,用于为聚合创建“桶”。他们丢弃“body”分别等于“error”和“warning”的项目(“term”匹配)。

我不明白为什么“过滤器”出现两次,嵌套在自身内部。根据一般聚合语法:

"aggregations" : {
    "<aggregation_name>" : {
        "<aggregation_type>" : {
            <aggregation_body>
        }
        [,"aggregations" : { [<sub_aggregation>]+ } ]?
    }
    [,"<aggregation_name_2>" : { ... } ]*
}
  • “aggs”是“聚合”的缩写
  • “消息”是我的“
  • “过滤器”是“”

第二个“过滤器”元素在做什么?并且在哪里记录了“过滤器”必须是自嵌套的?我正在学习的任何其他聚合似乎都不是这种情况。

感谢您的解释!

【问题讨论】:

    标签: json elasticsearch


    【解决方案1】:

    我理解你的感受,我也去过那里:-)

    filters 聚合中,第一个出现的filtersaggregation_type,第二个是filters 聚合的aggregation_body 的一部分,并且是此聚合支持的唯一有效key

    第二次出现的filters 可以被称为其他任何名称(filter_listlist 等)以表示它包含该聚合的过滤器列表,但 ES 人员选择了 filters,这恰好发生在也与聚合本身的名称相同。

    原来是这样的:

    {
      "aggs" : {                    <--- key word to declare aggregations
        "messages" : {              <--- custom name for the aggregation that follows
          "filters" : {             <--- aggregation_type
            "filters" : {           <--- first (and only) key of the aggregation_body
              "errors" :   { "term" : { "body" : "error"   }},
              "warnings" : { "term" : { "body" : "warning" }}
            }
          },
          "aggs" : {
            "monthly" : {
              "histogram" : {
                "field" : "timestamp",
                "interval" : "1M"
              }
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 2020-02-01
      • 2015-12-30
      相关资源
      最近更新 更多