我需要更新已经插入到 elasticsearch 5.4 中的很多文档。我想我在这里错过了一些大概念,因为我需要做一些简单的事情而我做不到。
我需要删除“req.body.client.id”的最后6个数字并隐藏其余部分(替换为x)。示例:9494402234028493247 ---> xxxxxxxxxxxxxx493247
我能做到这一点!但问题是代码太长了。我想使用 VARIABLE 但我不能。我不想重复字段 ctx._source.req.body.client.id 4 次。如果我可以这样做会更好:clientId = ctx._source.req.body.client.id 然后在脚本行的其余部分使用 clientId。这样做的正确方法是什么?
POST my_index/_update_by_query
{
"query": {
"regexp":{
"req.body.client.id":"94944022.*"
}
},
"script": {
"lang": "painless",
"inline": "ctx._source.req.body.client.id = 'xxxxxxxxxxx' + ctx._source.req.body.client.id.substring(ctx._source.req.body.client.id.length()-6,ctx._source.req.body.client.id.length())"
}
}
问题是关于变量和代码简化。
我找到了解决方案。这是一种叫做 PAINLESS 的语言。正确的方法是:
"String clientId = ctx._source.req.body.client.id;
int cLen = clientId.length();
ctx._source.req.body.client.id = "xxxxxxxxxxx" + clientId.substring(cLen-4,cLen);"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句