gpt4 book ai didi

elasticsearch - 通过聚合,是否可以将数组属性的所有值从所有分组的文档合并到合并的文档中?

转载 作者:行者123 更新时间:2023-12-03 02:37:48 25 4
gpt4 key购买 nike

我的文档格式类似于以下内容:

[
{
"name": "fred",
"title": "engineer",
"division_id": 20
"skills": [
"walking",
"talking"
]
},
{
"name": "ed",
"title": "ticket-taker",
"division_id": 20
"skills": [
"smiling"
]
}
]

我想运行aggs查询,以显示该部门的完整技能:即,
{

"aggs":{
"distinct_skills":{
"cardinality":{
"field":"division_id"
}
}
},
"_source":{
"includes":[
"division_id",
"skills"
]
}
}

..的结果如下:
{
"division_id": 20,
"skills": [
"walking",
"talking",
"smiling"
]
}

我知道我可以检索inner_hits并“手动”遍历列表和合并值。我认为如果可以查询它会更好。

最佳答案

只需管道两个Terms Aggregation查询,如下所示:

POST <your_index_name>/_search
{
"size": 0,
"aggs": {
"my_division_ids": {
"terms": {
"field": "division_id",
"size": 10
},
"aggs": {
"my_skills": {
"terms": {
"field": "skills", <---- If it is not keyword field use `skills.keyword` field if using dynamic mapping.
"size": 10
}
}
}
}
}
}

以下是示例响应:

响应:
{
"took" : 490,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"my_division_ids" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 20, <---- division_id
"doc_count" : 2,
"my_skills" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ <---- Skills
{
"key" : "smiling",
"doc_count" : 1
},
{
"key" : "talking",
"doc_count" : 1
},
{
"key" : "walking",
"doc_count" : 1
}
]
}
}
]
}
}
}

希望这可以帮助!

关于elasticsearch - 通过聚合,是否可以将数组属性的所有值从所有分组的文档合并到合并的文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58527418/

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