gpt4 book ai didi

elasticsearch - 聚合前 N 个结果

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

问题:

如果我搜索“iphone”,我会得到 400 个产品结果,并且我的产品类别聚合会返回结果集中的前 3 个类别。

这些类别包括智能手机、手机壳和手机配件。

如果我搜索“iphone 6”,我会得到 1400 个结果,因为额外的“6”会返回与更多产品的匹配项。产品类别聚合现在返回所有这些结果的前 3 个类别。

前 3 大产品类别现在是从电缆到电脑显示器的所有产品。

我需要做的是获取前 100 个结果的前 3 个类别。


我尝试过的:

我试过在顶级类别聚合中使用 top_hits 聚合,但它只返回每个类别中的顶级产品。

像这样:

{
"aggs": {

"product_categories": {
"terms": {
"field": "product_category",
"size": 10,
}
}
"aggs": {
"top-categories": {
"top_hits": {
"size" : 3
}
}
}
}
}

我还尝试创建一个包含子聚合的 top_hits 聚合来获取热门类别,但这也不起作用。

{
"aggs": {
"top-categories": {
"top_hits": {
"size" : 100
}
"aggs": {
"product_categories": {
"terms": {
"field": "product_category",
"size": 3,
}
}
}
}
}
}

谁能帮我解决这个问题?

最佳答案

您可以尝试使用基于 limit 过滤器的 filter 聚合,并将您的 terms 聚合嵌套在其中。

请注意,该限制适用于分片级别(请参阅 documentation)。

但是,这应该可以解决您的问题,查询如下:

{
"aggs": {
"limit_results": {
"filter": {
"limit": {
"value": 100
}
},
"aggs": {
"product_categories": {
"terms": {
"field": "product_category",
"size": 10
}
}
}
}
}
}

关于elasticsearch - 聚合前 N 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29125532/

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