句子:
这意味着upsert将尝试运行更新脚本,但如果文档不存在(或者您尝试更新的字段不存在),则会插入默认值。
当我尝试将字段插入现有文档时,它不起作用并返回null_pointer_exception
。尝试使用curl会返回相同的结果。
Elasticsearch Reference [6.1]没有提到可以使用字段插入字段。也许有版本问题。没有Elasticsearch-PHP [6.1] !!
参考文献中的示例:
curl -XPOST 'localhost:9200/test/type1/1/_update?pretty' -H 'Content-Type: application/json' -d'
{
"script" : {
"source": "ctx._source.ava += params.count",
"lang": "painless",
"params" : {
"count" : 4
}
},
"upsert" : {
"ava" : 1
}
}
'
当文档存在且字段“ava'缺席。
那么,问题是如何将字段嵌入到现有文档中?卷曲的例子很好,谢谢。
答案 0 :(得分:0)
如果ava
字段不存在,则预期NPE。改为改变你的脚本:
{
"script" : {
"source": "ctx._source.ava = (ctx._source.ava ?: 0) + params.count",
"lang": "painless",
"params" : {
"count" : 4
}
},
"upsert" : {
"ava" : 1
}
}