本章内容概述
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());
}