2015-05-05 81 views
0

我使用這個表達式來更新一個嵌套的文件:嵌套MVEL腳本更新

curl -XPOST 'localhost:9200/event/docs/cPd4cfqGTe2Hw9sq0qs_NQ/_update' -d '{ 
"script": "foreach (item : ctx._source.to) { item['read'] = true }" 
}' 

但它總是說ClassCastException異常布爾不能被強制轉換爲字符串。我嘗試將真正的參數,嘗試'T','真實','真',真,1.

用盡想法。

文件樣本:

{ 
    "prop":"test" 
    "to": [{"id": "1", "read":false}, 
      {"id":"2","read": true}] 
} 

我也試着改變「身份證」只是爲了測試,和它告訴我,我不能投的HashMap成字符串

curl -XPOST 'localhost:9200/event/docs/cPd4cfqGTe2Hw9sq0qs_NQ/_update' -d '{ 
    "script": "foreach (item : ctx._source.to) { item['id'] = '3' }", 
}' 

回答

1

腳本發送到UPDATE API是不正確的。 我已經糾正你的腳本 -

curl -XPOST 'http://localhost:9200/vm/vm/vm' -d '{ 
    "prop":"test",                        
    "to": [{"id": "1", "read":false}, 
      {"id":"2","read": true}] 
}' 

而且在更新,使用下面的腳本 -

curl -XPOST 'localhost:9200/vm/vm/vm/_update' -d '{ 
    "script": "for (item in ctx._source.to) { item.id = 4 }" 
}'