我正在尝试使用_reindex API编写转换。这个想法是,我要获取一个现有索引,我想对其重新索引,并在过程中的一些哈希字符串参数(类型字符串)的末尾附加一个数字。这是可行的解决方案吗?
POST <index>/<index_type>/_reindex
{
"source": {
"index": "<index_name>"
},
"dest": {
"index": "<new_index_name>",
},
"script": {
"source": "ctx._source.bene_acc_no += '21' ",
"source" : "ctx._source.orig_acc_no += '21' ",
"source" : "ctx._source.owner_acc_no += '21' "
}
}
还是我可以简单地使用"source" : "ctx._source.owner_acc_no++"
?
最后,我是否需要担心使用重新索引进行映射,还是可以假设这将在重新索引时自动完成。
先感谢您。
您必须在调用_reindex之前设置目标索引。重新索引不会从源索引复制设置。映射,分片计数,副本等必须提前配置。
如果在执行reindex api之前未创建新索引的映射,则将动态创建映射,即将从复制的第一个文档中推断字段的数据类型。因此最好先创建映射
重新索引语法
POST _reindex
{
"source": {
"index": "<source_index>"
},
"dest": {
"index": "<destination_index>"
},
"script": {
"source":"ctx._source.bene_acc_no += '21'; ctx._source.orig_acc_no += '21';ctx._source.owner_acc_no += '21'"
}
}
如果bene_acc_no是text类型
ctx._source.bene_acc_no + ='21'将在ex值后附加21。如果bene_acc_no =“ 20”,则新值将为“ 2021”
如果值是作为字符串存储的整数,并且您希望增加该值,则可以使用以下脚本“ ctx._source.bene_acc_no =(Integer.parseInt(ctx._source.bene_acc_no)+1).toString()”
如果bene_acc_no有字符,则以上操作将失败
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句