登录
首页 >  Golang >  Go问答

如何使用 go 在弹性搜索中按嵌套对象对文档进行排序?

来源:stackoverflow

时间:2024-04-06 14:36:34 334浏览 收藏

哈喽!今天心血来潮给大家带来了《如何使用 go 在弹性搜索中按嵌套对象对文档进行排序?》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我是 elasticsearch 新手。

我有文档,每个文档都有这样的结构:

{
    "created_at": "2018-01-01 01:01:01",
    "student": {
        "first_name": "john",
        "last_name": "doe"
    },
    "parent": {
        "first_name": "susan",
        "last_name": "smile"
    }
}

我只想使用 olivere/elastic 包根据 student.first_name 对这些文档进行排序。

这是我目前的查询:

searchsvc = searchsvc.sortby(elastic.newfieldsort("student.first_name").asc())

我收到此错误:

弹性:错误 400(错误请求):所有分片失败 [类型=搜索阶段执行异常]

但是,当我尝试按 created_at 对其进行排序时,它正在工作。

searchsvc = searchsvc.sortby(elastic.newfieldsort("created_at").asc())

我的索引中没有任何映射。 (这是问题所在吗?)

我尝试搜索“elasticsearch 按嵌套对象排序”之类的内容,但总是遇到需要对嵌套对象中的数组进行排序的问题。


解决方案


事实证明,这是一个初学者的错误。您无法按文本字段排序。我从这里得到的elasticsearch-dsl-py Sorting by Text() field

但是,如果您不指定映射,则可以按字段的关键字属性进行排序。

searchSvc = searchSvc.SortBy(elastic.NewFieldSort("student.first_name.keyword").Asc())

而且它有效!

以上就是《如何使用 go 在弹性搜索中按嵌套对象对文档进行排序?》的详细内容,更多关于的资料请关注golang学习网公众号!

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