文档
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"id" : "1",
"name" : "哈哈哈",
"pageView" : 0,
"personCerts" : [
{
"certNo" : "333"
"regMajor" : "321",
"regType" : "231"
},
{
"certNo" : "334"
"regMajor" : "322",
"regType" : "233"
},
{
"certNo" : "335"
"regMajor" : "323",
"regType" : "231
}
]
}
}
部分更新dsl,优化了判空
POST test_index/_update/1
{
"script": {
"source": """
if(ctx._source.containsKey('personCerts') && ctx._source.personCerts.length > 0) {
def targets = ctx._source.personCerts
.findAll(personCert -> personCert.certNo == params.personCerts.certNo);
for(personCert in targets) {
personCert.regMajor = params.personCerts.regMajor ;
personCert.regType = params.personCerts.regType ;
}}
""",
"lang": "painless",
"params": {
"personCerts": {
"regMajor": "000",
"regType":"111",
"certNo":"333"
}
}
}
}