gpt4 book ai didi

sorting - 如何使用 Go olivere/elastic 基于多个字段进行排序

转载 作者:行者123 更新时间:2023-12-01 21:12:58 47 4
gpt4 key购买 nike

几天来我一直在尝试了解如何使用 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" } }
]
}

关于sorting - 如何使用 Go olivere/elastic 基于多个字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63070742/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com