问题:
如果我搜索"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
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试创建一个top_hits带有子聚合的聚合来获得最高类别,但这也不起作用.
{
"aggs": {
"top-categories": {
"top_hits": {
"size" : 100
}
"aggs": {
"product_categories": {
"terms": {
"field": "product_category",
"size": 3,
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
您可以尝试使用filter基于limit过滤器的聚合,并将terms聚合嵌套在其中。
请注意,该限制适用于分片级别(请参阅文档)。
但是,这应该适合您的情况,查询如下:
{
"aggs": {
"limit_results": {
"filter": {
"limit": {
"value": 100
}
},
"aggs": {
"product_categories": {
"terms": {
"field": "product_category",
"size": 10
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5396 次 |
| 最近记录: |