[英]How to upgrade a running Elasticsearch older instance to a newer version?
[英]Elasticsearch: upsert working on older version but not on newer version
我有一個批量運行的upsert查詢。 最終文件應這樣存儲:
{
"email": "abc@xyz.com",
"sources": [1,2]
}
這是代碼:
var doc = {
"source": parseInt(id),
"email": email
}
var upsert_query = {
"script": "if (ctx._source.containsKey(\"sources\")) { if (!ctx._source.sources.contains(source)) { ctx._source.sources += source; } } else {ctx._source.sources = [source] }",
"params": {
"source": doc.source
},
"upsert": {
"email": doc.email,
"sources": [doc.source]
}
}
bulkRequestBody.push({"update": {"_index": "my_index", "_type": "email", "_id": doc.email, "_retry_on_conflict": 3}});
bulkRequestBody.push(upsert_query);
該代碼在Elasticsearch 1.4版上可以正常工作,但在2.1.1版上不能正常工作。
我還嘗試重組查詢:
var upsert_query = {
"script": {
"inline": "if (ctx._source.containsKey(\"sources\")) { if (!ctx._source.sources.contains(source)) { ctx._source.sources += source; } } else {ctx._source.sources = [source] }",
"params": {
"source": doc.source
}
},
"upsert": {
"email": doc.email,
"sources": [doc.source]
}
}
但仍然沒有運氣。 有什么幫助嗎?
需要啟用腳本來運行以下腳本:
在config的elasticsearch.yml
文件中,添加以下行:
script.inline: on
script.indexed: on
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.