public void batchUpdate(String indexType ,String userId, Integer cyberStartId, String cyberStarName, Integer mcnOrganId, String mcnOrganName) throws IOException {
final BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("user_id", userId));
HashMap<String, Object> params = new HashMap<>();
if (cyberStartId != null) {
params.put("cyber_start_id", cyberStartId);
}
if (StringUtils.isNotEmpty(cyberStarName)) {
params.put("cyber_star_name", cyberStarName);
}
if (mcnOrganId != null) {
params.put("mcn_organ_id", mcnOrganId);
}
if (StringUtils.isNotEmpty(mcnOrganName)) {
params.put("mcn_organ_name", mcnOrganName);
}
StringBuilder sb = new StringBuilder();
if (params.containsKey("cyber_start_id")) {
sb.append("ctx._source.cyber_start_id = params.cyber_start_id;");
}
if (params.containsKey("cyber_star_name")) {
sb.append("ctx._source.cyber_star_name = params.cyber_star_name;");
}
if (params.containsKey("mcn_organ_id")) {
sb.append("ctx._source.mcn_organ_id = params.mcn_organ_id;");
}
if (params.containsKey("mcn_organ_name")) {
sb.append("ctx._source.mcn_organ_name = params.mcn_organ_name;");
}
final Script script = new Script(ScriptType.INLINE, "painless", sb.toString(), params);
updateByQuery(queryBuilder, indexType, script);
}
public void updateByQuery(QueryBuilder queryBuilder, String index, Script script) throws IOException {
UpdateByQueryRequest request = new UpdateByQueryRequest(index);
request.setConflicts("proceed");
request.setQuery(queryBuilder);
request.setMaxDocs(10000);
request.setScript(script);
try {
BulkByScrollResponse response = restHighLevelClient.updateByQuery(request, RequestOptions.DEFAULT);
// 处理响应结果
} catch (Exception e) {
// 处理异常
}
}