繁体   English   中英

ElasticSearch Aggregator,按文本/关键字排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM