gpt4 book ai didi

elasticsearch - 聚合热门点击 ElasticSearch

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

我的文档结构如下:

{
"chefInfo": {
"id": int,
"employed": String
... Some more recipe information ...
}
"recipe": {
... Some recipe information ...
}
}

如果一位厨师有多个食谱,嵌套的 chefInfo block 在每个文档中都是相同的。我的问题是我想对文档的 chefInfo 部分中的字段进行聚合。然而,这并没有考虑到 chefInfo block 是重复的这一事实。

所以,如果 id 为 1 的厨师有 5 个食谱,而我在 employed 字段上聚合,那么这个特定的厨师将代表聚合中的 5 个计数,而我希望他们只数一个。

我考虑过对 chef_id 进行 top_hits 聚合,然后我想对所有存储桶进行子聚合,但我不知道如何对结果进行计数所有桶中的。

我想做的有可能吗?

最佳答案

对于elastic,每个文档本身都是唯一的。在您的情况下,您想根据不同的字段定义唯一性,此处为 chefInfo.id。要根据此字段查找唯一计数,您必须使用 cardinality aggregation .

您可以按如下方式应用聚合:

{
"aggs": {
"employed": {
"nested": {
"path": "chefInfo"
},
"aggs": {
"employed": {
"terms": {
"field": "chefInfo.employed.keyword"
},
"aggs": {
"employed_unique": {
"cardinality": {
"field": "chefInfo.id"
}
}
}
}
}
}
}
}

在结果 employed_unique 中给出预期的计数。

关于elasticsearch - 聚合热门点击 ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56220057/

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