阅读 140

ElasticSearch在Java中的应用1

ElasticSearch在Java中的应用1

本章内容概述

1、在Java应用中实现查询文档

2、在Java应用中实现添加文档

3、在Java应用中实现删除文档

4、在Java应用中实现更新文档

1

2

3

4

1、在Java应用中实现查询文档

1、创建SpringBoot工程

1



2、创建工程的时候,勾选需要的依赖

1



3、在src/test/demo下面的com.example.demo下面的ElasticSearchTestApplicationTests.java中写测试程序


根据id查询指定数据

1

2

3

//从ES中查询数据

@Test

public void query() throws UnknownHostException { 

//指定ES集群

Settings settings = Settings.builder().put("cluster.name", "myes").build();

//创建访问es服务器的客户端

TransportClient client = new PreBuiltTransportClient(settings).

addTransportAddress(new TransportAddress(

InetAddress.getByName("192.168.34.64"),9300));

//数据查询 GET /lib3/user/1

GetResponse response = client.prepareGet("lib3", "user", "1").execute().actionGet();

//从response得到查询的数据

System.out.println(response.getSourceAsString()); //得到json格式

//关闭客户端

client.close();

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

查询结果如下:

1



2、在Java应用中实现添加文档

向索引中添加一条数据

1

//向ES添加数据

@Test

public void add() throws IOException { 

//指定ES集群

Settings settings = Settings.builder().put("cluster.name", "myes").build();

//创建访问es服务器的客户端

TransportClient client = new PreBuiltTransportClient(settings).

addTransportAddress(new TransportAddress(

InetAddress.getByName("192.168.34.64"),9300));

//添加数据

/**

* ElasticSearch里面的写法:

* PUT /lib3/user/1

{

  "name":"赵六",

  "address":"黑龙江省铁岭市",

  "age":50,

  "birthday":"1970-12-12",

  "interests":"喜欢喝酒,锻炼,说相声"

}

*/

XContentBuilder doc = XContentFactory.jsonBuilder()

  .startObject()

  .field("name", "尼古拉斯")

  .field("address", "英国伦敦")

  .field("age", 12)

  .field("birthday", "1970-12-12")

  .field("interests", "喜欢喝酒,跑步,拍电影")

  .endObject();

//添加文档

IndexResponse response = client.prepareIndex("lib3", "user", "11")

.setSource(doc).get();

//判断是否成功:如果返回值是CREATED,表示成功

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

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

3、在Java应用中实现删除文档

根据id删除指定数据

1

//从ES中删除指定文档

@Test

public void delete() throws UnknownHostException { 

//指定ES集群

Settings settings = Settings.builder().put("cluster.name", "myes").build();

//创建访问es服务器的客户端

TransportClient client = new PreBuiltTransportClient(settings).

addTransportAddress(new TransportAddress(

InetAddress.getByName("192.168.34.64"),9300));

//删除文档

DeleteResponse response = client.prepareDelete("lib3", "user", "1").get();

//判断是否成功,如果返回值是OK,表示删除成功

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

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

4、在Java应用中实现更新文档

根据id修改指定数据

1

//更新ES中的文档

@Test

public void update() throws IOException, InterruptedException, ExecutionException { 

//指定ES集群

Settings settings = Settings.builder().put("cluster.name", "myes").build();

//创建访问es服务器的客户端

TransportClient client = new PreBuiltTransportClient(settings).

addTransportAddress(new TransportAddress(

InetAddress.getByName("192.168.34.64"),9300));

//更新文档

UpdateRequest request = new UpdateRequest();

request.index("lib3")

   .type("user")

   .id("11")

   .doc(

    XContentFactory.jsonBuilder().startObject()

       .field("name","尼古拉赵四")

       .endObject()

   );

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

//获取更新状态,如果是OK,表示成功

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

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

upsert更新方式

1

//更新ES中的文档:upsert方式:如果文档存在,更新;如果文档不存在,添加

@Test

public void upsert() throws IOException, InterruptedException, ExecutionException { 

//指定ES集群

Settings settings = Settings.builder().put("cluster.name", "myes").build();

//创建访问es服务器的客户端

TransportClient client = new PreBuiltTransportClient(settings).

addTransportAddress(new TransportAddress(

InetAddress.getByName("192.168.34.64"),9300));

 

//大致意思:如果执行更新操作,没有该文档,那么去执行某个添加

//所以我们需要有一个添加和一个更新

//因为添加和更新相当于一个同步操作,所以我们进行添加和更新的时候,就需要换种方式写

//添加文档

IndexRequest request1 = new IndexRequest("lib3", "user", "15")

.source(

XContentFactory.jsonBuilder()

  .startObject()

  .field("name", "美国队长")

  .field("address", "美国")

  .field("age", 38)

  .field("birthday", "1980-10-12")

  .field("interests", "喜欢滑翔,跑步,喝酒")

  .endObject()

);

UpdateRequest request2 = new UpdateRequest("lib3", "user", "15")

   .doc(

    XContentFactory.jsonBuilder().startObject()

       .field("name","超级英雄美国对象")

       .endObject()

   ).upsert(request1);

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

//获取更新状态,如果是OK,表示成功

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

}

")

       .endObject()

   ).upsert(request1);

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

//获取更新状态,如果是OK,表示成功

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

}

————————————————

版权声明:本文为CSDN博主「奔腾游子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/jintianzheng/article/details/116129276


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐