【问题标题】:How to using aggregations with composite for elasticsearch-dsl如何将聚合与复合用于 elasticsearch-dsl
【发布时间】:2023-03-06 20:08:01
【问题描述】:

我正在使用聚合,聚合桶默认接受一个键值,然后我研究并找到它

"aggs" : {
        "my_buckets": {
            "composite" : {
                "sources" : [
                    { "category_pk": { "terms": { "field": "category.pk"} } },
                    { "category_name": { "terms": {"field": "category.name" } } }
                ]
            }
        }
    }
}

上面的代码结果是两个键和_doc_count,但是我不能申请elasticsearch-dsl 谁来帮帮我

  • 谢谢

【问题讨论】:

  • 不清楚你在追求什么。你能解释一下你想要达到什么目标吗?
  • 感谢您的帮助。我解决了这个问题,我在下面写了一个帖子

标签: elasticsearch elasticsearch-aggregation elasticsearch-dsl


【解决方案1】:

我解决了问题,当我们使用Composite

s = ProductDocument.search()
brand_name = A('terms', field='brand.name')
brand_pk = A('terms', field='brand.id')
brand_key_aggs = [
    {'brand_pk': brand_pk},
    {'brand_name': brand_name}
]
s.aggs.bucket('brand_terms', "composite", sources=brand_key_aggs) 

示例结果

 {  
               'key':{  
                  'brand_pk':869,
                  'brand_name':'Uni Baby'
               },
               'doc_count':2
            },

【讨论】:

  • 好的,我现在明白了,您想要 Python 等效的 DSL 查询。很高兴你知道了!
  • 对于那些需要更新答案的人,最后一行代码 aggs(至少在我的 ES-dsl 版本中)更改为:s.aggs.bucket('brand_terms', "composite", sources =brand_key_aggs)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多