2017-06-13 39 views
0

我有以下文件:腳本場數數組長度

{ 
    "likes": { 
    "data": [ 
     { 
     "name": "a" 
     }, 
     { 
     "name": "b" 
     }, 
     { 
     "name": "c" 
     } 
    ] 
    } 
} 

我試圖運行update_by_query,將增加一個名爲「LIKE_COUNT」字段的數組項數內likes.data

重要的是要知道,並非我的所有文檔都有likes.data對象。

我試圖這樣:

POST /facebook/post/_update_by_query 
{ 
    "script": { 
    "inline": "if (ctx._source.likes != '') { ctx._source.like_count = ctx._source.likes.data.length }", 
    "lang": "painless" 
    } 
} 

但是,讓此錯誤消息:

{ 
    "type": "script_exception", 
    "reason": "runtime error", 
    "script_stack": [ 
     "ctx._source.like_count = ctx._source.likes.data.length }", 
     "            ^---- HERE" 
    ], 
    "script": "if (ctx._source.likes != '') { ctx._source.like_count = ctx._source.likes.data.length }", 
    "lang": "painless" 
    } 
+0

您是否試過'size()'而不是'length'? – Val

+0

是的,得到相同的錯誤信息。如果我更新一個單獨的文檔(使用'.length'),但是當我嘗試運行'update_by_query'時,我得到這個錯誤信息。我懷疑這是因爲一些文檔沒有'likes'對象,但我有'if'語句來處理這個對象。 –

+0

我認爲你的情況'ctx._source.likes!='''應該讀爲'ctx._source.likes!= null' – Val

回答