Я реализовал Tire с elasticsearch. Локально мой проект работает нормально, и у меня нет проблем с поиском в моем файле index. Но когда я развернул свое приложение на своем сервере, я получил это сообщение об ошибке:
Tire::Search::SearchRequestFailed (500 : {"error":"SearchPhaseExecutionException[Не удалось выполнить фазу [query_fetch], полный сбой; shardFailures {[hDTlT_K_Sl6P5regwKNJyg][статьи] [0]: QueryPhaseExecutionException[[статьи][0]: query[ConstantScore(NotDeleted(cache(_type:article)))],from[0],size[25],sort[!]: Query Failed [Не удалось выполнить основной запрос]]; вложенный: IOException[Can't sort для строковых типов с более чем одним значением на документ или более чем одним токеном на поле]; }]","status":500}):
Я считаю, что мои статьи хранятся в моем индексе, потому что я не получил никаких ошибок при их создании. Я также попытался запустить тот же запрос вручную с помощью этого:
curl -XPOST 'http://localhost:9200/articles/article/_search' -d '{
"sort": [
{
"supplier_code": "desc"
}
]
}'
И получил практически такой же ответ:
{"error":"SearchPhaseExecutionException[Не удалось выполнить фазу [query_fetch], полный сбой; shardFailures {[hDTlT_K_Sl6P5regwKNJyg][статьи][0]: QueryPhaseExecutionException[[статьи][0]: запрос[ConstantScore(NotDeleted(cache(_type: article)))],from[0],size[10],sort[!]: Query Failed [Не удалось выполнить основной запрос]]; вложенный: IOException[Не удается отсортировать строковые типы с более чем одним значением в документе , или более одного токена на поле]; }]","status":500}
Так может ли кто-нибудь указать мне в правильном направлении? Я скопировал именно ту конфигурацию Сэма, которую использую на своем локальном компьютере. Странно что на сервере не работает.
Что мне здесь не хватает?
Заранее большое спасибо
РЕДАКТИРОВАТЬ:
Я обнаружил, что сортировка, которую я пытаюсь выполнить, вызывает проблему. Кроме того, это как-то связано с сопоставлением объекта моей статьи с эластичным поиском.
Что-то с полем пытаюсь разобраться поставить на not_analyzed Я правильно понимаю? Нужно ли явно сопоставлять все мои поля, если я сопоставляю только одно поле?