2016-05-23 54 views
1

我最近運行Elasticsearch過濾請求是Elasticsearch過濾器請求的結果的默認文檔序列是什麼?

{ 
    "from" : 0, 
    "size" : 10, 
    "query" : { 
    "filtered" : { 
     "filter" : { 
     "bool" : { 
      "must" : { 
      "terms" : { 
       "a_id" : [ 257793, 257798, 257844 ] 
      } 
      } 
     } 
     } 
    } 
    }, 
    "explain" : false, 
    "fields" : "a_id" 
} 

所以,我可以找到a_id所有文檔中257793, 257798, 257844,結果257844, 257798, 257793。到現在爲止還挺好。

然後我發現無論序號是數字的順序,返回文檔總是在同一a_id順序。也就是說,即使我跑

 "terms" : { 
      "a_id" : [257798, 257844, 257793 ] 
     } 

結果文檔是在257844, 257798, 257793的順序爲好。

所以我很好奇Elasticsearch過濾背後的機制。任何人都可以幫助我並給我一個提示嗎?

+0

我認爲這可能是有關與存儲在ES上的「索引序列」,但沒有「成熟的理論」在我的腦海中證明了這一點。 – user1702713

+0

另外'a_id'是種類「unique_id」,沒有2個文檔具有相同的'a_id'。所以倒序索引就像'257798 - > doc_257798','257844 - > doc_257844' – user1702713

回答

0

默認情況下,ES以_score的降序返回。您可以提供排序選項,根據您希望返回結果的順序來說明排序選項。對於例如,基於日期字段

你可以得到更多的信息:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html https://www.elastic.co/guide/en/elasticsearch/guide/current/_sorting.html

+0

謝謝你的回答,但默認情況下ES不會按降序返回,因爲我已經嘗試過了,但是以第一個中間值。 :( – user1702713

+0

我錯過了在我的回答中正確解釋的內容'在Elasticsearch中,相關性分數由搜索結果中返回的浮點數表示爲_score,所以默認排序順序是_score遞減。是desc順序,但不是'_id'值,而是'_score'。你可以嘗試'sort':{「a_id」:{「order」:「desc」}}'' – Hugo

相關問題