【问题标题】:multiple filters on a single aggregation in elasticsearchelasticsearch中单个聚合上的多个过滤器
【发布时间】:2018-06-24 05:25:33
【问题描述】:

我在 python 客户端上使用弹性搜索。我想过滤同一个聚合桶上的多个字段。 首先,让我们注入一些数据

curl -XPUT 'localhost:9200/data/document/1' -d '{ "facet1": ["a1","b1"], "facet2":["b2"],"facet3":["a3", "c3"] }'

curl -XPUT 'localhost:9200/data/document/2' -d '{ "facet1": ["a1","c1"], "facet2":["b2", "c2"],"facet3":["a3", "c3"] }'

curl -XPUT 'localhost:9200/data/document/3' -d '{ "facet1": ["a1"], "facet2":["b2"],"facet3":["c3"] }'

那就查询吧!

{'_source': ['facet1',
             'facet2',
             'facet3'],
 'aggregations':
 {'all_products': {'aggregations':
  {'facet1_aggregation': {'aggregations': 
                          {'filtered_facet1': {'terms': {'field': 'facet1'}}},
                           'filter': [{'terms': {'facet2': ['a2 ' 'b2']}},
                                      {'terms': {'facet3': ['a3', 'b3' 'c3']}}]}},
   'facet2_aggregation': {'aggregations': 
                          {'filtered_facet2': {'terms': {'field': 'facet2'}}},
                           'filter': [{'terms': {'facet1': ['a1' 'b1']}},
                                     {'terms': {'facet3': ['a3', 'b3' 'c3']}}]},
  'global': {}}},
 'query': {'bool': 
   {'filter': [{'terms': {'facet1': ['a1']}},
               {'terms': {'facet2': ['a2', 'b2']}}]},
    'must': {'match_all': {}}},
 'size': 10000}

当我运行这个查询时,我得到一个解析错误

TransportError(400, 'parsing_exception', 'Expected [START_OBJECT] under [filter], but got a [START_ARRAY] in [facet1_aggregation]')

【问题讨论】:

  • 您能更详细地说明您的意图吗?这看起来像一个解析问题。输入表单问题甚至不是有效的 JSON。
  • @ttylec 它是有效的 JSON à-la Python :-)
  • 但是,@g.lahlou 如果您正确地格式化您的查询会有所帮助
  • @Val,我的 emacs 说大括号不匹配 :( 所以如果缺少某些东西,它可能会从多个地方丢失。这可能会影响问题的陈述。
  • 你在末尾缺少两个右花括号

标签: python elasticsearch elasticsearch-aggregation


【解决方案1】:

差不多了。我相信您应该将terms 查询的数组放在bool.must 中。

您收到的错误说它需要filter 下的对象,但得到一个数组。在filter 中,任何有效的查询都可以通过,查询列表不是有效的查询。

希望有帮助!

【讨论】:

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