【问题标题】:elasticsearch filters aggregation won't workelasticsearch过滤器聚合不起作用
【发布时间】:2015-12-30 05:03:06
【问题描述】:

就像this 帖子一样,我无法让过滤器 agg 工作:

GET files/_search
{
  "query": {
    "match": {
      "words": "sugar"
    }
  },
  "aggs": {
    "xxx": {
      "filters": {
        "filter_list": {
          "errors": {
            "term": {
              "abstract": "error"
            }
          },
          "warnings": {
            "term": {
              "abstract": "warning"
            }
          }
        }
      },
      "aggs": {
        "st": {
          "significant_terms": {
            "field": "abstract"
          }
        }
      }
    }
  }
}

SearchParseException[[files][3]: query[words:sugar],from[-1],size[-1]: 解析失败 [[xxx] 中 START_OBJECT 的未知键: [过滤器列表]。]]; }{[tIS8uY8nTDil6kWtgsbkQg][文件][4]: SearchParseException[[files][4]: 查询[words:sugar],from[-1],size[-1]: 解析失败 [解析源失败 [{\n \"query\": {\n
\"match\": {\n \"words\": \"sugar\"\n }\n },\n \"aggs\": {\n \"xxx\": {\n \"filters\": {\n \"filter_list\": {\n
\"错误\": {\n \"术语\": {\n \"摘要\": \"错误\"\n }\n },\n \"警告\": {\n
\"术语\": {\n \"摘要\": \"警告\"\n }\n }\n }\n },\n \"aggs\": {\n \"st\": {\n
\"significant_terms\": {\n \"field\": \"abstract\"\n
}\n }\n }\n }\n }\n}\n]]];嵌套: SearchParseException[[epars][4]: query[words:sugar],from[-1],size[-1]: 解析失败 [[xxx] 中 START_OBJECT 的未知键: [过滤器列表]。]]; }]", "状态": 400 }

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您只有一件事错了,即filter_list 应改为filters,因为它是filters aggregation 的强制元素。

    GET files/_search
    {
      "query": {
        "match": {
          "words": "sugar"
        }
      },
      "aggs": {
        "xxx": {
          "filters": {
            "filters": {           <---- change this
              "errors": {
                "term": {
                  "abstract": "error"
                }
              },
              "warnings": {
                "term": {
                  "abstract": "warning"
                }
              }
            }
          },
          "aggs": {
            "st": {
              "significant_terms": {
                "field": "abstract"
              }
            }
          }
        }
      }
    }
    

    【讨论】:

    • 嗨,瓦尔!感谢您的回复。不过,我认为您在我提到的那篇帖子中说过您回答:“第二个过滤器事件可能被称为其他任何东西(filter_list、list 等)以表示它包含该聚合的过滤器列表,但是ES 人员选择了恰好与聚合本身名称相同的过滤器。” - 我错过了什么?
    • 这意味着您必须使用两次filters,这是 ES 人员选择并强制执行的。这个命名恐怕有点不幸,但就是这样。
    • 有这个机会吗?
    猜你喜欢
    • 2016-03-14
    • 2015-09-17
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多