Получить отсортированный результат поиска в 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 для упругого поиска.

http://elasticsearch-py.readthedocs.org/en/latest/

Другие вопросы по тегам