在Java应用中访问ElasticSearch
  4Sc2EobNVfno 2023年11月21日 28 0

第四节 在Java应用中访问ElasticSearch

4.1在Java应用中实现查询文档

pom中加入ElasticSearch6.2.4的依赖:

org.elasticsearch.client transport 6.2.4

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>

org.apache.maven.plugins maven-compiler-plugin 3.2 1.8 1.8 UTF-8

4.2 在Java应用中实现添加文档

"{" +
            "\"id\":\"1\"," +
            "\"title\":\"Java设计模式之装饰模式\"," +
            "\"content\":\"在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。\"," +
            "\"postdate\":\"2018-05-20 14:38:00\"," +
            "\"url\":\"csdn.net/79239072\"" +
            "}"

XContentBuilder doc1 = XContentFactory.jsonBuilder() .startObject() .field("id","3") .field("title","Java设计模式之单例模式") .field("content","枚举单例模式可以防反射。") .field("postdate","2018-02-03") .field("url","csdn.net/79247746") .endObject();

IndexResponse response = client.prepareIndex("index1", "blog", null)
            .setSource(doc1)
            .get();
    
	System.out.println(response.status());

4.3在Java应用中实现删除文档

DeleteResponse response=client.prepareDelete("index1","blog","SzYJjWMBjSAutsuLRP_P").get();

//删除成功返回OK,否则返回NOT_FOUND

System.out.println(response.status());

4.4在Java应用中实现更新文档

UpdateRequest request=new UpdateRequest(); request.index("index1") .type("blog") .id("2") .doc( XContentFactory.jsonBuilder().startObject() .field("title","单例模式解读") .endObject() ); UpdateResponse response=client.update(request).get();

//更新成功返回OK,否则返回NOT_FOUND

System.out.println(response.status());

upsert方式:

IndexRequest request1 =new IndexRequest("index1","blog","3") .source( XContentFactory.jsonBuilder().startObject() .field("id","3") .field("title","装饰模式") .field("content","动态地扩展一个对象的功能") .field("postdate","2018-05-23") .field("url","csdn.net/79239072") .endObject() ); UpdateRequest request2=new UpdateRequest("index1","blog","3") .doc( XContentFactory.jsonBuilder().startObject() .field("title","装饰模式解读") .endObject() ).upsert(request1);

UpdateResponse response=client.update(request2).get();

//upsert操作成功返回OK,否则返回NOT_FOUND

System.out.println(response.status());

4.5在Java应用中实现批量操作

MultiGetResponse mgResponse = client.prepareMultiGet() .add("index1","blog","3","2") .add("lib3","user","1","2","3") .get();

for(MultiGetItemResponse response:mgResponse){ GetResponse rp=response.getResponse(); if(rp!=null && rp.isExists()){ System.out.println(rp.getSourceAsString()); } }

bulk:

BulkRequestBuilder bulkRequest = client.prepareBulk();

bulkRequest.add(client.prepareIndex("lib2", "books", "4") .setSource(XContentFactory.jsonBuilder() .startObject() .field("title", "python") .field("price", 68) .endObject() ) ); bulkRequest.add(client.prepareIndex("lib2", "books", "5") .setSource(XContentFactory.jsonBuilder() .startObject() .field("title", "VR") .field("price", 38) .endObject() ) ); //批量执行 BulkResponse bulkResponse = bulkRequest.get();

System.out.println(bulkResponse.status()); if (bulkResponse.hasFailures()) {

System.out.println("存在失败操作");
    }
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月21日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   53   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   107   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
4Sc2EobNVfno
作者其他文章 更多