ES DSL中的聚合过滤器

时间:2017-01-27 14:59:11

标签: python elasticsearch elasticsearch-dsl

我有以下聚合过滤器:

" aggs":{     " agg_name" :{       "过滤器" :{"存在":{"字段":"字段名称" }}     }   } }

但我想用elasticsearch-dsl写清楚。这是我能做的最好的事情:

aggs.bucket(' agg_name',{"过滤":{"存在":{"字段":" FIELD_NAME"}}})

但我知道有一种更清洁的方式。一些失败的尝试:

  • aggs.bucket(' agg_name',A('过滤器',类型='存在', 字段=' FIELD_NAME'))
  • aggs.bucket(' agg_name',A('过滤器','存在', 字段=' FIELD_NAME'))
  • aggs.bucket(' agg_name',A()。过滤器('存在', 字段=' FIELD_NAME'))
  • aggs.bucket(' agg_name&#39)。过滤器('存在&#39 ;, 字段=' FIELD_NAME&#39)

我目前无法从文档中获取正确的信息。是否可以将其写得更像DSL?

2 个答案:

答案 0 :(得分:2)

你还没有尝试过这个:

aggs.A('filter', query.Q('exists', field='field_name'))

可以在unit test source code

中找到更多示例

答案 1 :(得分:0)

s.aggs.bucket("bucket_name", "filter",
                      query.Q("term", fieldname='vale')).metric('field', 'sum', field="whatever")

这对我有用