我有一个网上商店,需要按汇总销售数据进行排序。产品的示例文件:
{
"id": 123,
"title": "foo product",
"picture": "https://i.picsum.photos/id/959/200/300.jpghttps://i.picsum.photos/id/959/200/300.jpg"
}
销售示例文件:
{
"product_id": 123,
"date": "2020-01-01",
"sales": 5
},
{
"product_id": 123,
"date": "2020-01-02",
"sales": 6
},
{
"product_id": 123,
"date": "2020-01-03",
"sales": 2
},
{
"product_id": 123,
"date": "2020-01-05",
"sales": 88
}
请注意,没有任何销售的日子不在sales
索引/类型中。
现在:
我该怎么做?我的背景来自Solr,为此我将使用流表达式。
更新
我将为此悬赏。我发现可以通过使用Aggregations并将其嵌套来实现。
如果我的数据结构必须与此不同,请描述。预先感谢!
答案 0 :(得分:3)
在弹性搜索中不可能加入两个索引。
有两种选择:
您可以过滤sales
索引,然后query
返回产品集合中sales
查询的结果,以获取产品详细信息。
要对缺失值进行排序,应使用missing
参数。
Refer
要获取范围,3to10, more than 30
应该使用[范围聚合](聚合范围查询elasticsearch)
GET /_search
{
"aggs" : {
"sale_ranges" : {
"range" : {
"field" : "sales",
"ranges" : [
{ "to" : 10 },
{ "from" : 10, "to" : 20 },
{ "from" : 20 }
]
}
}
}
}
没有销售就无法轻易获得产品。为此,