簡體   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