0

这是一个最小的例子。

我有一个'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')

我在这里做错了什么?

4

1 回答 1

0

编辑:问题创建者找到了解决方案并将其发布在评论中:

已经试过了,不行。但是,我刚刚找到了解决方案,这是属性映射的问题 - 请参阅这个问题:stackoverflow.com/questions/18065667/elasticsearch-wont-sort

旧:不幸的是,我无法在这里测试它,但请尝试这个版本:

q = pyes.query.MatchAllQuery()
tuple(record['name'] for record in conn.search(q, indices = 'test_index', sort = 'name'))

另请注意,现在有一个用于弹性搜索的官方 python api。

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

于 2013-11-14T15:57:39.860 回答