2016-04-22 53 views
0

我在彈性搜索中有兩個字段(ID和Name)。如何編寫腳本在elasticsearch中分別排序兩個桶

我必須搜索和排序由下面的條件的數據的要求:

剷鬥1:包含具有名稱值空(排序以升序ID字段)
剷鬥2中的所有記錄:包含具有名稱中的所有記錄值呈現(按名稱字段按升序排序)

然後在一個響應中返回存儲區1的所有記錄,然後返回存儲區2。

回答

0

聽起來好像你可以用不同的方式說明這一點:獲取所有文檔,然後按名稱排序(先空!),然後按ID排序。

這樣說,解決方案非常容易失敗。無論如何,空字段應該排序時排序升序,所以:

{ 
    "query" : { 
     "match_all": {} 
    }, 
    "sort" : [ 
     { "Name" : "asc" }, 
     { "ID" : "asc" } 
    ] 
} 
+0

但在這種情況下,桶2將按ID也排序,我不想。我希望Bucket 1只會按ID字段排序,而Bucket 2只會按名稱字段排序。在結果Bucket 1之後是Bucket 2. – Shailendra

+0

@Shailendra - 只有當Name相等時,Bucket 2纔會按ID排序。既然你沒有指定名稱相等時應如何排序,我認爲這是可以接受的。 – femtoRgon