为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
守候你守候我 2023-05-08 16:05:00
我是 Elasticsearch 的新手。我有文件,每个文件都有这样的结构:{    "created_at": "2018-01-01 01:01:01",    "student": {        "first_name": "john",        "last_name": "doe"    },    "parent": {        "first_name": "susan",        "last_name": "smile"    }}我只想根据student.first_nameusing olivere/elasticpackage for对这些文档进行排序go。这是我目前的查询:searchSvc = searchSvc.SortBy(elastic.NewFieldSort("student.first_name").Asc())我收到了这个错误:弹性:错误 400(错误请求):所有分片都失败 [type=search_phase_execution_exception]但是,当我尝试按 对它进行排序时created_at,它正在工作。searchSvc = searchSvc.SortBy(elastic.NewFieldSort("created_at").Asc())我在索引中没有任何映射。(这是问题吗?)我尝试搜索类似“Elasticsearch 按嵌套对象排序”之类的内容,但我总是遇到需要对嵌套对象中的数组进行排序的问题。
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

原来这是初学者的错误。。你不能按文本字段排序。我从这里得到它elasticsearch-dsl-py Sorting by Text() field

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

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

它有效!


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信