4

我需要的非常簡單,但我無法找到如何在Elasticsearch中完成它,可能是因爲需要完成的複雜性。elasticsearch動態查詢 - 向每個返回的文檔添加另一個字段

輸入(兩個示例JSON文件)

{ "car" : 150, "bike" : 300 } 

{ "car" : 100, "bike" : 200} 

我理想中的回報是,當我火了返回我的文件有一個額外的字段inventory其定義爲數量的總和搜索查詢汽車和自行車。並按排序順序。

樣本輸出:

hits: [ 
    { "car" : 150, "bike" : 300, "inventory": 450}, 
    { "car" : 100, "bike" : 200, "inventory": 300} 
] 

是否有可能做elasticsearch這樣的事情? (我假設使用動態腳本)

+0

你可以創建第三個字段中的數據被插入時,或也可以使用[腳本](http://stackoverflow.com/問題/ 24444966 /彈性搜索找到 - 和 - 個字段,在單查詢)。 – 2014-10-07 05:09:50

+0

http://blog.qbox.io/elasticsearch-aggregations – 2014-10-07 08:50:48

回答

3

我這樣做了使用腳本字段。參見:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-script-fields.html

樣本查詢:

query: { 
... 
}, 
script_fields: { 
    inventory: { 
    script: "doc['car'].value + doc['bike'].value" 
    } 
} 

這將導致每一個單獨的字段列命中爲:

fields: { 
    inventory: [450] 
} 

但是,因爲我也想這是我結束了使用排序:

query: { 
... 
}, 
sort: { 
    _script: { 
     script: "doc['car'].value + doc['bike'].value", 
     type: "number", 
     order: "desc" 
    } 
} 

這回我一個排序字段,每個命中,如:

sort: [450] 
相關問題