es中的编辑分为:基于id的单条件编辑、自定义条件的编辑
基于id的单条件编辑:UpdateRequest
基于自定义条件的编辑:需借助底层脚本语言来实现,成本较高暂时不打算深入研究
//es单条操作--修改文档(记录)
public String editEsDocument(){ //开始设置属性 Elasticsearch elasticsearch = new Elasticsearch(); elasticsearch.setUserName("张三"); elasticsearch.setAge(190); elasticsearch.setSex("男"); //创建修改文档的请求对象 UpdateRequest updateRequest = new UpdateRequest(); //指定要操作哪个索引下的那个id的值 updateRequest.index("user").id("sAMC7XgBrgVVHTXvmYL_"); //以json格式添加文档信息 updateRequest.doc(XContentType.JSON , "userName" , elasticsearch.getUserName(), "age" , elasticsearch.getAge(), "sex" , elasticsearch.getSex()); //像es服务器发送请求 UpdateResponse update = null; try { update = this.client.update(updateRequest, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } System.out.println("update es index _index is : " + update.getIndex()); System.out.println("update es index _id is : " + update.getId()); System.out.println("update es index _result is : " + update.getResult()); return "edit es index complete"; }
特殊情况:
基于ID的map数据类型修改操作
针对map数据类型的修改操作,可以依托实体类或自定义条件时设置的数据结构来进行,无须特殊处理。
public void mapTestUpdate(){ //通过实体类做修改属性 Map map = new HashMap(); map.put("数学" , "99"); // Person person = new Person(); // person.setAge(66); // person.setScoure(map); //通过自己拼装数据来修改属性 Map attrMap = new HashMap(); attrMap.put("age" , 25); attrMap.put("scoure" , map); //指定要操作哪个索引下的那个id的值 UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index("map_test"); updateRequest.id("9Pztx3kB0gyd9uM48juS"); // updateRequest.doc(com.alibaba.fastjson.JSON.toJSONString(person) , XContentType.JSON); updateRequest.doc(com.alibaba.fastjson.JSON.toJSONString(attrMap) , XContentType.JSON); //像es服务器发送请求 UpdateResponse update = null; try { update = this.client.update(updateRequest, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } System.out.println("update es index _index is : " + update.getIndex()); System.out.println("update es index _id is : " + update.getId()); System.out.println("update es index _result is : " + update.getResult()); }