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

时间:2018-11-14 03:26:31

标签: elasticsearch go

我是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按嵌套对象排序”之类的内容,但始终遇到需要对嵌套对象中的数组进行排序的问题。

1 个答案:

答案 0 :(得分:1)

原来,这是一个初学者的错误。您无法按文本字段进行排序。我是从这里elasticsearch-dsl-py Sorting by Text() field

获得的

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

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

它有效!

相关问题