У меня есть индекс, содержащий документы с purchased_at
. Его отображение:Почему Elasticsearch не сортирует мои записи в порядке убывания?
"purchased_at" : {
"format" : "strict_date_optional_time||epoch_millis",
"type" : "date"
}
документы содержат значения полей в этом формате: "2013-06-21T11:07:07.000Z"
. The docs говорят о сортировке:
_score
не рассчитывается, так как он не используется для сортировки.
Это очень хороший индикатор, если используется мой параметр sort
или нет. Я использую жемчужину elasticsearch
в версии 2.0.0. Что работает сортировка в порядке возрастания:
MyModel.search("original_id:#{uniq_original_id}", sort: 'purchased_at')
Что не работает:
# syntax documented here:
# https://github.com/elastic/elasticsearch-rails/blob/15761247f3e99654bda946a178e50b5365414b59/elasticsearch-model/test/integration/active_record_pagination_test.rb#L106
MyModel.search("original_id:#{uniq_original_id}", sort: [{purchased_at: 'desc'}])
# syntax used here:
# https://github.com/elastic/elasticsearch-rails/blob/15761247f3e99654bda946a178e50b5365414b59/elasticsearch-persistence/examples/notes/application.rb#L114
MyModel.search("original_id:#{uniq_original_id}", sort: [{purchased_at: {order: 'desc'}}])
# syntax used here:
# https://github.com/elastic/elasticsearch-rails/blob/15761247f3e99654bda946a178e50b5365414b59/elasticsearch-rails/lib/rails/templates/searchable.rb#L132
MyModel.search("original_id:#{uniq_original_id}", sort: {purchased_at: 'desc'})
Излишне говорить, что я запутался. Как я могу отсортировать поле в порядке убывания?
Вы можете видеть в журнале, какой поисковый запрос действительно сгенерирован и выполнен? Это может помочь, почему поиск работает неправильно. – apepper
Кажется, это известная проблема: https://github.com/ankane/searchkick/pull/639 – wrburgess