gpt4 book ai didi

elasticsearch - 在 Elasticsearch 中使用过滤器查询聚合嵌套字段

转载 作者:行者123 更新时间:2023-12-02 23:28:59 24 4
gpt4 key购买 nike

例如,我需要在 flex 搜索中使用过滤器进行汇总。
我有一些 Assets 在 flex 搜索中另存为文档

{
"id":1,
"name":"1",
"url":"1png20160612115249190.png",
"description": "this is a good asset",
"alt_sizes": ["hi","yes"],
"tags":[{ "id":"1", "name":"Movies"},
{ "id":"2", "name":"Sports"}],
"packs":[{ "id":"1", "name":"pack1", "partnerId":"1"},
{ "id":"2", "name":"pack2 test", "partnerId":"2"}],
"category":[{ "id":"1", "name":"cat1"},
{ "id":"2", "name":"cat2"}],
"appPartner":[{ "id":"1", "name":"par1"},
{ "id":"2", "name":"par2"}],
"created_time":"2016-07-26 00:00:00",
"updated_time":"2016-07-26 10:45:43"
}

在这里,包在ES中被索引为嵌套类型。
包将包含ID,名称和partnerId的数组。
现在,我想要的是聚合具有特定partnerId的包,就像我希望所有具有partnerId = 10的包一样。

我已经试过这个查询
{
"size":0,
"query": {
"nested": {
"path":"appPartner",
"query": {
"bool": {
"must": [
{"match": {"appPartner.id": "1"}}
]
}
}
}
},
"aggs": {
"packs" : {
"nested" : {
"path" : "packs"
},
"aggs" : {
"id" : {
"terms" : {
"field" : "packs.id"
}
,
"aggs":{
"name":{
"terms" : {
"field" : "packs.name"
}
}
}
}
}

}
}
}

该查询使我可以汇总所有嵌套包ID。我需要汇总所有嵌套的packid,其中partnerID =

最佳答案

  "aggs": {
"packs": {
"nested": {
"path": "packs"
},
"aggs": {
"partner": {
"filter": {
"term": {
"packs.partnerId": "10"
}
},
"aggs": {
"id": {
"terms": {
"field": "packs.id"
},
"aggs": {
"name": {
"terms": {
"field": "packs.name"
}
}
}
}
}
}
}
}
}

关于elasticsearch - 在 Elasticsearch 中使用过滤器查询聚合嵌套字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38721970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com