Получить отсортированный результат поиска в pyes
Вот минимальный пример.
У меня есть индекс 'test_index'
со следующими записями:
{u'name': u'b'}
{u'name': u'e'}
{u'name': u'a'}
{u'name': u'c'}
{u'name': u'd'}
Я хочу получить записи в алфавитном порядке 'name'
поле. Я использую sort
аргумент, но результат не отсортирован:
q = pyes.query.MatchAllQuery().search()
tuple(record['name'] for record in conn.search(q, indices = 'test_index', sort = 'name'))
Результат:
(u'b', u'c', u'd', u'e', u'a')
Что я здесь не так делаю?
1 ответ
Редактировать: Создатель вопроса нашел решение и разместил его в комментариях:
Уже попробовал, не работает. Тем не менее, я только что нашел решение, это была проблема с отображением атрибута - см. Этот вопрос: stackru.com/questions/18065667/elasticsearch-wont-sort
Старый: К сожалению, я не мог проверить это здесь, но попробуйте эту версию, пожалуйста:
q = pyes.query.MatchAllQuery()
tuple(record['name'] for record in conn.search(q, indices = 'test_index', sort = 'name'))
Также обратите внимание, что теперь есть официальный API Python для упругого поиска.