【发布时间】:2019-10-10 02:56:55
【问题描述】:
按点击次数最多的子聚合文档来源排序术语聚合存储桶
我有一个问题,
上下文: 这是一个旅游套餐索引,具有“set_url”属性之一,具有相同set_url的多个套餐称为家庭套餐。
要求: 按任何字段的排序顺序获取 seo 包可以说持续时间(索引为类型:整数),但排序将基于每个家庭的最低价格包,并希望结果大小为 20。
简单形式的问题陈述:假设通过 set_url 字段的术语聚合器产生 3 个桶 A、B、C,每个桶有 3 个包,(A1,A2,A3),(B1,B2 , B3) 和 (C1, C2, C3),现在首先我想从每个存储桶中计算最低定价包假设它是 A2、B3、C1 然后我想按相关最低定价包的持续时间字段对存储桶进行排序每个桶,即 A2、B3 和 C1 包。
我想做什么:
应用一些过滤器
在键 set_url 上应用术语顶级聚合,制作家庭包桶,现在我想根据来自热门点击聚合的最低价格家庭包订购这些桶,热门点击聚合是根据 ES 文档的度量聚合。
这些是热门类型的子聚合,它按升序对价格进行排序,并采用一种尺寸来挑选最低价格的家庭套餐。
当前查询:
{
index: "seo_packages",
type: "seo_package",
body: {
size: 0,
query: {
bool: {
filter: {
and: [{
terms: {
package_type: ["seo"]
}
},
{
terms: {
categories: ["tour"]
}
},
{
term: {
is_published: true
}
},
],
},
}
},
aggs: {
group_by_set_url: {
terms: {
field: "set_url",
size: 10,
order: {
"min_price_expressions.how to access doc source property duration here" => "asc"
}
},
aggs: {
min_price_expressions: {
top_hits: {
sort: [{
price_expression: {
order: "asc"
}
}],
_source: {
includes: [: id,: duration]
},
size: 1
},
}
}
}
}
}
}
这里的order子句访问top hits子聚合文档的属性应该是什么?
提前致谢。
【问题讨论】:
-
简单形式的问题陈述:假设术语聚合器产生 3 个桶 A、B、C,每个桶有 3 个包,(A1、A2、A3)、(B1、B2、B3)和( C1,C2,C3),现在首先我想计算每个桶的最低价格包假设它是A2,B3,C1然后我想按每个桶的相关最低价格包的持续时间字段对桶进行排序,即A2, B3 和 C1 包。
标签: elasticsearch