在elasticsearch中,我可以在查詢時將字符串強制轉換爲long值嗎?在查詢ElasticSearch數據時進行Casting
我有我的文檔中是這樣的: 「屬性」: { 「鑰匙」: 「年齡」, 「值」: 「23」 }, { 「鑰匙」:「名」 ‘值’:‘約翰’ }, ],
我想編寫一個查詢來獲取所有有年齡> 23。我需要的值轉換爲int的人這樣當鑰匙變老時我可以比較它。
上述文檔是一個非常特定於此問題的示例。
我將不勝感激您的幫助。
謝謝!
在elasticsearch中,我可以在查詢時將字符串強制轉換爲long值嗎?在查詢ElasticSearch數據時進行Casting
我有我的文檔中是這樣的: 「屬性」: { 「鑰匙」: 「年齡」, 「值」: 「23」 }, { 「鑰匙」:「名」 ‘值’:‘約翰’ }, ],
我想編寫一個查詢來獲取所有有年齡> 23。我需要的值轉換爲int的人這樣當鑰匙變老時我可以比較它。
上述文檔是一個非常特定於此問題的示例。
我將不勝感激您的幫助。
謝謝!
您可以使用腳本爲
POST /index/type/_search
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "foreach(attr : _source['attributes']) {if (attr['key']=='age') { return attr['value'] > ageValue;} } return false;",
"params" : {
"ageValue" : 23
}
}
},
"query": {
"match_all": {}
}
}
}
}
UPD:注意動態腳本應在elasticsearch.yml啓用。
另外,我想你可以通過重構文檔結構併爲年齡字段應用適當的映射來歸檔更好的查詢性能。
你還可以分享你的映射,特別是'屬性'字段的映射嗎?你還有該數組中的任何其他屬性,其內容也可能是數字的(例如'height','weight'等)? – Val