Как отсортировать документы по вложенному объекту в упругом поиске с помощью go? - PullRequest
0 голосов
/ 14 ноября 2018

Я новичок в 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, используя пакет olivere/elastic для go.

Это мой запрос на данный момент:

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

и я получаю эту ошибку:

эластичный: ошибка 400 (неверный запрос): все шарды не пройдены [Тип = search_phase_execution_exception]

Однако, когда я попытался отсортировать его по created_at, он работает.

searchSvc = searchSvc.SortBy(elastic.NewFieldSort("created_at").Asc())

У меня нет отображения в индексе. (это проблема?)

Я пытался найти что-то вроде «сортировки Elasticsearch по вложенному объекту», но у меня всегда возникали вопросы, которые требуют сортировки массива во вложенном объекте.

1 Ответ

0 голосов
/ 14 ноября 2018

Оказывается, это ошибка новичка. Вы не можете сортировать по текстовым полям.Я получил это отсюдаполе.

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

И это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...