我设置了elasticsearch用于搜索产品目录的变体。基本上在哪里:
产品has_many变种 Variant belongs_to product
变量索引json / mapping包含产品名称。
我正在尝试搜索变体,按产品ID,桶大小为1进行分组。我能够按最低价格,最高价格等进行排序。
这有效:
POST /variants/_search?size=0
{
"aggs" : {
"min_price" : { "min" : { "field" : "price" } }
}
}
这是(我)下一步需要的东西:
POST /variants/_search?size=0
{
"aggs" : {
"product_name" : { "sort by product_name asc / desc" }
}
}
我的最后一项任务是按字母顺序对它们进行排序,但我似乎无法使用聚合器按关键字字段(asc / desc)进行排序。
答案 0 :(得分:1)
在ES 6.0中,您可以这样做。请注意,大小限制了返回的数量,并且您请求的越多,查询执行的成本就越高。所以,如果你真的需要成千上万,你可能会想尝试不同的方法。可能是您为可以搜索/排序的产品创建了单独的汇总索引,而不是尝试通过聚合来完成。
GET /variants/_search
{
"size": 0,
"aggs" : {
"product_name" : {
"terms" : {
"field" : "product_name",
"size": 1000,
"order" : { "_key" : "asc" }
}
}
}
}