登录
首页 >  Golang >  Go问答

按照多个字段在弹性搜索中对响应进行排序的方法

来源:stackoverflow

时间:2024-03-02 18:45:25 187浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《按照多个字段在弹性搜索中对响应进行排序的方法》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我想基于多个字段进行字段排序。我有一片 elastic.fieldsort (比如排序器),我想做一些类似的事情:

searchsource := elastic.newsearchsource()
// searchsource.sortby(sorter...)   // unpacking of slice isn't working

我知道这个 sortby 接受单个元素:

searchSource.SortBy(sorter[0], sorter[1], sorter[2])

但问题是我有一个动态大小的切片。请帮助我如何实现这一点,或者有更好的方法吗?


解决方案


如果类型正确,切片解包就会起作用。

package main

import (
    "fmt"
)

func print(data ...string) {
    fmt.println(data)
}

func main() {
    d := []string{"hello", "world", "now"}
    print(d...)
}

对于这个具体示例,如果由于任何原因解包仍然无法正常工作,有一个解决方法。

由于 sortby 函数仅附加到底层排序器切片 https://github.com/olivere/elastic/blob/v7.0.22/search_source.go#L160

func (s *searchsource) sortby(sorter ...sorter) *searchsource {
    s.sorters = append(s.sorters, sorter...)
    return s
}

你可以做到

for _, sorter := range sorters {
    searchSource.SortBy(sorter)
}

终于介绍完啦!小伙伴们,这篇关于《按照多个字段在弹性搜索中对响应进行排序的方法》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>