[英]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.