ElasticSearch修改多层结构中的数据附java代码

需求

        多层级关系,需要修改es_KIE下medical_ner,case_info中字段的值

参考网上帖子修改的写法

request.index(esInfo.getIndex()) //索引名
        .id(timelineSearch.getId())//id
        .doc(
                XContentFactory.jsonBuilder()
                   .startObject()
                   .field("es_KIE.case_info.hosptial",timelineSearch.getHospital())
                   .field("es_KIE.medical_ner.symptom",timelineSearch.getSymptom())
                   .field("es_KIE.medical_ner.cure", timelineSearch.getCure())
                   .field("es_KIE.medical_ner.es_map_cls",timelineSearch.getEsMapCls())
                   .endObject());

 执行完会发现响应"OK",没有报错,但是es库里值未改变

成功修改的写法:(多层嵌套)

        HashMap<String,Object> medicalNerMap = new HashMap<>();
        medicalNerMap.put("symptom",timelineSearch.getSymptom());
        medicalNerMap.put("cure",timelineSearch.getCure());
        HashMap<String, Object> caseInfoMap = new HashMap<>();
        caseInfoMap.put("hospital",timelineSearch.getHospital());
        HashMap<String,Object> esKIEMap = new HashMap<>();
        esKIEMap.put("medical_ner",medicalNerMap);
        esKIEMap.put("case_info",caseInfoMap);
        esKIEMap.put("es_map_cls",timelineSearch.getEsMapCls());
        HashMap<String,Object> bodyMap = new HashMap<>();
        bodyMap.put("es_KIE", esKIEMap);
        UpdateRequest request =
                 new UpdateRequest(esInfo.getIndex(),timelineSearch.getId());
        request.doc(JSON.toJSONString(bodyMap), XContentType.JSON);
        UpdateResponse response =         
                 restHighLevelClient.update(request,RequestOptions.DEFAULT);
捕获下异常就可以

KQL:
POST common_dev/_update/0000739386_00
{
    "doc":{
        "es_KIE":{
          "medical_ner":{
            "symptom":["xxx","xxx"],
            "cure":["xxx",
                "xxx"]
          },
          "case_info":{
            "hospital":"xxxx"
          },
          "es_map_cls":"xxxx"
        }  
    }
}








        

 

 

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值