【发布时间】:2013-11-28 14:49:14
【问题描述】:
对于电子商务,我正在实施弹性搜索,以便获得一个类别的产品 ID 的排序和分页结果集。
我有一个如下所示的产品文档:
PUT /products_test/product/1
{
"id": "1",
"title": "foobar",
"sort": 102,
"categories": [
"28554568",
"28554577",
"28554578"
],
}
为了得到结果集,我过滤和排序如下:
POST /products/_search
{
"filter": {
"term": {
"categories": "28554666"
}
},
"sort" : [
{ "sort" : {"order" : "asc"}}
]
}
但是,我现在了解到的要求是,产品分类取决于类别。查看上面的示例,这意味着我需要为类别数组中的每个值添加不同的排序值,并且根据我过滤的类别,我想按相应的排序值进行排序。
文档应如下所示:
PUT /products_test/product/1
{
"id": "1",
"title": "foobar",
"categories": [
{ "id": "28554568", "sort": "102" },
{ "id": "28554577", "sort": "482" },
{ "id": "28554578", "sort": "2" }
]
}
我的查询现在应该可以排序如下:
POST /products/_search
{
"filter": {
"term": {
"categories.id": "28554666"
}
},
"sort" : [
{ "categories.{filtered_category_id}.sort" : {"order" : "asc"}}
]
}
有没有可能做到这一点?
【问题讨论】:
标签: sorting elasticsearch