[英]ElasticSearch Aggregator with sorting by text/keyword
我设置了elasticsearch来搜索产品目录的变体。 基本上在哪里:
产品has_many_variants Variant属于_to产品
并且变体索引json /映射包含产品名称。
我正在尝试搜索变体,按产品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)进行排序。
在ES 6.0中,您可以执行此操作。 请注意,大小限制了返回的数量,并且您请求的次数越多,执行查询的成本就越高。 因此,如果您真的需要成千上万,则可能需要尝试其他方法。 可能是您为可以搜索/分类的产品创建了单独的汇总索引,而不是尝试通过聚合来进行搜索/分类。
GET /variants/_search
{
"size": 0,
"aggs" : {
"product_name" : {
"terms" : {
"field" : "product_name",
"size": 1000,
"order" : { "_key" : "asc" }
}
}
}
}
参考: https : //www.elastic.co/guide/zh-CN/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#search-aggregations-bucket-terms-aggregation-order
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.