2013-11-14 74 views
0

下面是一個簡單的例子。在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') 

什麼我錯在這裏做什麼?

+0

你能嘗試使用排序=「名稱:ASC」和排序=「名稱:DESC」並告訴我,如果有什麼區別嗎?代碼看起來正確imo。 – MeiSign

+1

已經嘗試過,它不起作用。但是,我剛剛找到了解決方案,它是屬性映射的問題 - 請參閱此問題:http://stackoverflow.com/questions/18065667/elasticsearch-wont-sort – Joe

回答

0

編輯: 問題的創造者找到解決方案,並張貼在評論:

已經嘗試過了,這是行不通的。但是,我剛纔找到了解決方案,它是與屬性映射的問題 - 看這個問題:stackoverflow.com/questions/18065667/elasticsearch-wont-sort

老: 不幸的是我無法測試在這裏,但嘗試這個版本PLS:

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/