[英]sorting elastic response based on multiple fields using olivere/elastic
[英]How to sort based on multiple fields with Go olivere/elastic
幾天來,我一直在嘗試了解如何使用 Go olivere/elastic
基於多個字段進行排序。 我正在嘗試將其翻譯成 Go
{
"sort" : [
"name",
{ "age" : "desc" },
],
}
我嘗試使用NewFieldSort()
並在搜索服務中提供一些SortBy()
。 它適用於一個SortBy()
但不適用於兩個SortBy()
。 它返回Error 400 (Bad Request): all shards failed [type=search_phase_execution_exception]
這是我的代碼
sortQuery1 := elastic.NewFieldSort("name")
sortQuery2 := elastic.NewFieldSort("age").Desc()
searchService := esclient.Search().
Index("students").
SortBy(sortQuery1).
SortBy(sortQuery2)
searchResult, err := searchService.Do(ctx)
你們對嘗試什么有什么建議嗎? 提前致謝!
您在示例中使用的SortBy
是可變參數,從簽名中可以看出: SortBy(sorter...Sorter) *SearchService
。
所以你只需要用你的過濾條件調用一次:
sortQuery1 := elastic.NewFieldSort("name")
sortQuery2 := elastic.NewFieldSort("age").Desc()
searchService := client.Search().
Index("students").
SortBy(sortQuery1, sortQuery2)
將此請求正文編組到 JSON 后,它將如下所示:
{
"sort": [
{ "name": { "order": "asc" } },
{ "age": { "order": "desc" } }
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.