gpt4 book ai didi

对象上的 Elasticsearch 聚合

转载 作者:行者123 更新时间:2023-11-29 02:44:31 25 4
gpt4 key购买 nike

我如何才能只对对象属性运行聚合查询,但在结果中获取所有属性?例如我想得到 [{'doc_count': 1, 'key': {'id': 1, 'name': 'tag name'}}],但是得到了 [{' doc_count': 1, 'key': '1'] 代替。字段“标签”上的聚合返回零结果。

映射:

{
"test": {
"properties" : {
"tags" : {
"type" : "object",
"properties": {
"id" : {"type": "string", "index": "not_analyzed"},
"name" : {"type": "string", "index": "not_analyzed", "enabled": false}
}
}
}
}
}

聚合查询:(按预期仅返回 ID,但如何在结果中获取 ID 和名称对?)

'aggregations': {
'tags': {
'terms': {
'field': 'tags.id',
'order': {'_count': 'desc'},
},
}
}

编辑:通过聚合 "script": "_source.tags" 获得 ID 和名称,但仍在寻找更快的解决方案。

最佳答案

如果你愿意,你可以使用脚本,例如

"terms":{"script":"doc['tags.id'].value + '|' + doc['tags.name'].value"}

对于每个创建的存储桶,您将获得一个键,其中包含您在脚本中包含的字段的值。老实说,聚合的目的不是返回完整的文档,而是对文档组(桶)进行计算并返回结果,例如总和和不同的值。您实际对查询所做的是根据字段 tags.id 创建存储桶。

请记住,结果中的键将包括以“|”分隔的两个值因此您可能必须操纵它的值来提取您需要的所有信息。

关于对象上的 Elasticsearch 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23405670/

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