ElasticSearch在Java中的应用2

本章内容概述

1、mget批量查询
2、bulk批量操作

1、mget批量查询

//mget根据id批量查询数据
	@Test
	public void multiquery() throws UnknownHostException { 
		
		//指定ES集群
		Settings settings = Settings.builder().put("cluster.name", "myes").build();
		
		//创建访问es服务器的客户端
		TransportClient client = new PreBuiltTransportClient(settings).
								InetAddress.getByName("192.168.34.64"),9300));
								addTransportAddress(new TransportAddress(
		
		//多索引 多文档查询
		MultiGetResponse response = client.prepareMultiGet()
									.add("lib3", "user", "2","5","7")
									.add("libary", "book", "101","103","105")
									.get();
		
		//遍历查询到的数据
		for(MultiGetItemResponse item:response) {
			//获取MultiGetResponse里面的每一项
			GetResponse gr = item.getResponse();
			//判空和判断是否存在
			if(gr!=null && gr.isExists()) {
				System.out.println(gr.getSourceAsString());
			}
		}
		
	}

2、bulk批量操作

bulk主要用来实现批量增、删、改

2.1 bulk批量添加

//bulk:用来实现批量增删改
	@Test
	public void bulkquery() 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));
		
		//批量添加
		BulkRequestBuilder bulkBuild = client.prepareBulk();
		
		//添加一条
		bulkBuild.add(client.prepareIndex("lib3", "user", "16")
							.setSource(
									XContentFactory.jsonBuilder()
									  .startObject()
									  .field("name", "李磊")
									  .field("address", "焦作市")
									  .field("age", 22)
									  .field("birthday", "1998-12-12")
									  .field("interests", "喜欢学习,跑步,拍电影")
									  .endObject()
							)
				);
		//添加一条
		bulkBuild.add(client.prepareIndex("lib3", "user", "17")
							.setSource(
									XContentFactory.jsonBuilder()
									  .startObject()
									  .field("name", "韩梅梅")
									  .field("address", "郑州市")
									  .field("age", 24)
									  .field("birthday", "1996-07-12")
									  .field("interests", "喜欢学习,跑步,拍电影")
									  .endObject()
							)
				);
	
		BulkResponse response = bulkBuild.get();
		
		System.out.println(response.status());
		
		//判断批量操作中是否存在失败
		if(response.hasFailures()) {
			System.out.println("存在失败的");
		}
		
	}

2.2 bulk批量删除

//bulk:用来实现批量删除
	@Test
	public void bulkdelete() 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));
		
		//批量删除
		BulkRequestBuilder bulkBuild = client.prepareBulk();
		
		bulkBuild.add(new DeleteRequest("lib3","user","2"));
		bulkBuild.add(new DeleteRequest("lib3","user","4"));
		
	
		BulkResponse response = bulkBuild.get();
		
		System.out.println(response.status());
		
	}

2.3 bulk批量修改

//bulk批量更新文档
	@Test
	public void bulkupdate() 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));
		//批量删除
		BulkRequestBuilder bulkBuild = client.prepareBulk();
		
		bulkBuild.add(new UpdateRequest("lib3", "user", "5").doc(
					 XContentFactory.jsonBuilder().startObject()
		  			   .field("name","张三丰")
		  			   .endObject()
				));
		bulkBuild.add(new UpdateRequest("lib3", "user", "6").doc(
				 XContentFactory.jsonBuilder().startObject()
	  			   .field("name","本太明")
	  			   .field("age", 19)
	  			   .endObject()
			));
	
		BulkResponse response = bulkBuild.get();
		
		System.out.println(response.status());
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JTZ001

你的鼓励是我创作的最大动力?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值