ES updateByQuery java 代码

883 阅读1分钟
/**
* @Description: 处理需要更新的 attachment 对象
*/
private void updateAttachmentByGuid(String index, Attachment attachment){
    UpdateByQueryRequest request = new UpdateByQueryRequest(index);
    request.setQuery(QueryBuilders.matchPhraseQuery("guid", attachment.getGuid()));
    request.setScript(new Script(
            "ctx._source.acode="+attachment.getAcode()
            +";ctx._source.attachmentType="+attachment.getAttachmentType()
            +";ctx._source.direction="+attachment.getDirection()
            +";ctx._source.distance="+attachment.getDistance()
            +";ctx._source.geom="+attachment.getGeom()
            +";ctx._source.guid="+attachment.getGuid()
            +";ctx._source.name="+attachment.getName()
            +";ctx._source.referenceGuid="+attachment.getReferenceGuid()
            +";ctx._source.referenceType="+attachment.getReferenceType()
            +";ctx._source.tagList="+attachment.getTagList()
            +";ctx._source.version="+attachment.getVersion()
    ));
    esUpdateData(index, request);
}

/**
* @Description: 更新 ES 中的数据
*/
private void esUpdateData(String index, UpdateByQueryRequest request) {
    try {
        client.updateByQuery(request, RequestOptions.DEFAULT);
    }catch (Exception e){
        e.printStackTrace();
        log.info("更新"+index+"出现异常");
    }
}