2014-10-06 78 views
2

我想補充一點到彈性搜索使用JavaScript api陣列「tags」:[「red」],目前,我這樣做如下:插入陣列採用彈性搜索的JavaScript API

client.update(
"test":{ 
"index": "test", 
"type": "type1", 
"id": "1", 
"body": { 
"script": "ctx._source.tags += tag", 
"params": { "tag": "blue" } 
} 
}) 

這改變了場"tags" : ["red"]"tags" : blue代替的["red","blue"]

我通過Ubuntu的終端使用curl -XPUT or curl -XPOST方法

我的節點國防部得到預期的輸出ULE彈性搜索版本2.4.2彈性搜索服務器是1.3.2

請幫助...

回答

2

ElasticSearch腳本引擎支持JavaScript,請閱讀:why not javascript

要在兩種情況下的項目添加到array,使用add()功能,而不是+=

curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{ 
"script":"ctx._source.tags.add(tag)", 
"params":{"tag":"blue"} 
}' 
+1

由於BatScream,其現在的工作, – 2014-10-06 13:20:57

+0

感謝BatScream,其現在的工作, – 2014-10-06 13:22:26

+0

這不是工作,1 )如果標籤是整數類型或2)標籤不存在,我也試過「upsert」:{ 「tags」:[] },但這是行不通的....請幫助 – 2014-10-07 06:47:32