elasticsearch - 在我的 Elastic Search upsert 脚本中,如何引用 upsert 内容?
问题描述
示例更新插入是:
POST test/_doc/1/_update
{
"script" : {
"source": "ctx._source.counter += params.count",
"lang": "painless",
"params" : {
"count" : 4
}
},
"upsert" : {
"counter" : 1
}
}
显然,这可以访问_source
预先存在的文档并对其进行修改,并且它可以访问params
来执行此操作。但是它将如何访问与upsert
它一起提交的对象呢?它似乎不在ctx
as中,upsert
也不_upsert
是doc
.
我想参考它,因为我有一个比示例更复杂的文档,比如 20 多个字段,一些嵌套部分每个有 5 个字段,我认为将所有文档详细信息放入params
以及upsert
将其拉入其中的脚本。
最坏的情况我可以写:
POST test/_doc/1/_update
{
"scripted_upsert": true,
"script" : {
"source": "if(ctx.op=="create"){ctx._source=params.upsert} else {ctx._source.counter += params.upsert.counter}",
"lang": "painless",
"params" : {
"upsert" : {
"counter" : 1
}
}
},
"upsert" : {}
}
但这真的……也不是很好。
解决方案
推荐阅读
- arrays - 无法访问数组内的对象数组及其大小
- javascript - 显示元素按下按钮同时隐藏所有其他元素
- twilio - 如果在非工作时间未得到答复,则消息有问题
- python - Keras ValueError:未知激活函数:
- django - 处理表单时处理 SMS 消息
- node.js - 节点 - 尝试查找和过滤落入今天时间线的对象数组(时间戳)
- java - NullPointerException 写入一个很长的字段 - (对某些人来说,这可能看起来有点数学重)?
- c# - 如何将 lambda 表达式参数类型转换为另一种泛型类型?
- javascript - 使用带有道具的子组件动态反应
- python - Keras LSTM 输入/输出维度