1 根据查询条件更新数据——适用于简单的数据清洗工作
下面的demo是一个简单的清洗坐标数据的脚本,将string格式的坐标清洗成number格式,在es5.6版本升级都6.8版本的时候做数据迁移会遇到这个问题,es6.8对坐标的格式要求更严格
query里面是查询条件(参考使用笔记1)
script里面是脚本
lang后面表示脚本语言的类型
inline后面是实际的逻辑脚本(类似于java代码,写的时候可以参考java语法写)
params后面是一个传参入口,在inline中用params.***的格式引入(第二段demo)
POST index/_update_by_query
{
"query": {
"match_all": {}
},
"script": {
"lang": "painless",
"inline": "if(ctx._source.SHAPE!=null&&ctx._source.SHAPE.coordinates!=null){ctx._source.SHAPE.coordinates[0]=Double.parseDouble(ctx._source.SHAPE.coordinates[0].toString());ctx._source.SHAPE.coordinates[1]=Double.parseDouble(ctx._source.SHAPE.coordinates[1].toString())}",
"params":{
"name":"测试参数"
}
}
}
{
"query": {
"match_all": {}
},
"script": {
"lang": "painless",
"inline": "ctx._source.name = params.name",
"params":{
"name":"测试名称"
}
}
}
2 elasticsearch批量设置别名
add表示新增操作,remove表示移除操作。index里是索引名称,alias里是对应的别名
POST /_aliases
{
"actions": [
{
"add": {
"index": "index1",
"alias": "index1_alias"
}
},
{
"add": {
"index": "index2",
"alias": "index2_alias"
}
},
{
"remove": {
"index": "index3",
"alias": "index3_alias"
}
}, {
"remove": {
"index": "index4",
"alias": "index4_alias"
}
}
]
}