我是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_name
的{{1}}包基于olivere/elastic
对那些文档进行排序。
这是我目前的查询:
go
我收到此错误:
弹性:错误400(错误请求):所有分片均失败 [type = search_phase_execution_exception]
但是,当我尝试按searchSvc = searchSvc.SortBy(elastic.NewFieldSort("student.first_name").Asc())
对其进行排序时,它正在工作。
created_at
索引中没有任何映射。 (这是问题吗?)
我尝试搜索“ Elasticsearch按嵌套对象排序”之类的内容,但始终遇到需要对嵌套对象中的数组进行排序的问题。
答案 0 :(得分:1)
原来,这是一个初学者的错误。您无法按文本字段进行排序。我是从这里elasticsearch-dsl-py Sorting by Text() field
获得的但是,如果不指定映射,您可以执行的操作,则可以按字段的关键字属性进行排序。
searchSvc = searchSvc.SortBy(elastic.NewFieldSort("student.first_name.keyword").Asc())
它有效!