gpt4 book ai didi

node.js - ElasticSearch NodeJS - 聚合项返回多个源属性

转载 作者:行者123 更新时间:2023-12-03 01:33:39 29 4
gpt4 key购买 nike

我需要获得一个独特的事物列表,其中包含一些附加的属性。到目前为止,这只是返回一个唯一的名称列表,但是如果我想包含聚合文档的 id,我该怎么办?

我正在使用带有 .search() 方法的 elasticsearch npm 模块

任何帮助将不胜感激。

params.body.aggs = {
uniqueCoolThings: {
terms: {
field: 'cool_thing.name.keyword'
}
}
}

这将返回 { key, doc_count } 我想要 { key, id, doc_count } 的列表

这样可行!谢谢技术专家席德!

那么如果我的文档看起来像这样呢
{ cool_things: [{ name, id }, { name, id }] }

我如何找到我目前热门的人的 id。例如,这是工作查询。
params.body.aggs = {
uniqueCoolThings: {
terms: {
field: 'cool_things.name.keyword'
},
aggs: {
value: {
top_hits: {
size: 1,
_source: {
includes: ['cool_things.id']
}
}
}
}
}
}
}

然而这会回来
...hits._source: {
uniqueCoolThings: [
{
"id": 500
},
{
"id": 501
}
]
} ...

我想知道如何做一个 where 条件,以便它只返回与它当前所在的唯一 cool_things.name.keyword 匹配的 ID。

最佳答案

最多可以使用top hits aggregation作为跟踪聚合文档的子聚合。

示例:

类似的术语聚合查询:

"aggs": {
"uniqueCoolThings": {
"terms": {
"field": "cool_thing.name.keyword"
}
}
}

将返回以下结果:
"aggregations": {
"uniqueCoolThings": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "XYZ",
"doc_count": 2
},
{
"key": "ABC",
"doc_count": 1
}
]
}
}

如果您将 top hits 聚合作为子聚合添加到上述查询中:
"aggs": {
"uniqueCoolThings": {
"terms": {
"field": "cool_thing.name.keyword"
},
"aggs": {
"value": {
"top_hits": {
"_source": "false"
}
}
}
}
}

您将得到以下结果:
"aggregations": {
"uniqueCoolThings": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "XYZ",
"doc_count": 2,
"value": {
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "product",
"_type": "_doc",
"_id": "BqGhPGgBOkyOnpPCsRPX",
"_score": 1,
"_source": {}
},
{
"_index": "product",
"_type": "_doc",
"_id": "BaGhPGgBOkyOnpPCfxOx",
"_score": 1,
"_source": {}
}
]
}
}
}
....
.... excluding output for brevity !!

请注意,在上述结果中,您的术语存储桶中有聚合文档 _id( value.hits.hits._id )。

不确定语法,但这样的东西应该适合你:
params.body.aggs = {
uniqueCoolThings: {
terms: {
field: 'cool_thing.name.keyword'
},
aggs: {
value: {
top_hits: {
_source: 'false'
}
}
}
}
}

关于node.js - ElasticSearch NodeJS - 聚合项返回多个源属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155545/

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