我已经尝试了数天,以了解如何使用Go基于多个字段进行排序olivere/elastic
。我正在尝试将其翻译成Go
{
"sort" : [
"name",
{ "age" : "desc" },
],
}
我尝试使用,NewFieldSort()
并SortBy()
在Search Service中提供了一些内容。一个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" } }
]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句