Java API批量操作Elasticsearch

上一节讲到如何对索引进行增删改查操作,但是都是针对于单个的来说,这节课就开始介绍如何批量的创建、修改、删除索引。废话不多说,我们直接看具体代码。
1.批量创建索引
/**
* 批量添加索引
* @throws IOException
*/
@Test
public void batchAddIndex() throws IOException {
BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareIndex("batch_test1", "batch", "1")
.setSource(jsonBuilder()
.startObject()
.field("user", "lzq")
.field("postDate", new Date())
.field("message", "trying out Elasticsearch")
.endObject()
)
);
bulkRequest.add(client.prepareIndex("batch_test2", "batch", "2")
.setSource(jsonBuilder()
.startObject()
.field("user", "zx")
.field("postDate", new Date())
.field("message", "another post")
.endObject()
)
);
BulkResponse bulkResponse = bulkRequest.get();
if (bulkResponse.hasFailures()) {
System.out.println("failures..............:"+bulkResponse.buildFailureMessage()
);
}
}
Java API批量操作Elasticsearch
如图所示:批量创建的两个索引,在es系统里面都可以找到,所以说明索引创建是成功的。
这里需要注意的是,索引的名称不能大写,必须是小写或者下划线之类的。还有buildFailureMessage函数返回的是批量操作错误的失败信息,hasFailures返回的是批量操作是否正确。

2.批量修改索引
/**
* 批量修改索引
* @throws IOException
*/
@Test
public void batchUpdateIndex() throws IOException {
BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareUpdate("batch_test1", "batch", "1").setDoc(jsonBuilder()
.startObject()
.field("user", "修改lzq")
.field("postDate", new Date())
.field("message", "batch_test1被我修改了")
.endObject()));
bulkRequest.add(client.prepareUpdate("batch_test2", "batch", "2").setDoc(jsonBuilder()
.startObject()
.field("user", "修改zx")
.field("postDate", new Date())
.field("message", "batch_test1被我修改了")
.endObject()));
BulkResponse bulkResponse = bulkRequest.get();
if (bulkResponse.hasFailures()) {
System.out.println("failures..............:"+bulkResponse.buildFailureMessage()
);
}
}
Java API批量操作Elasticsearch
如图所示,表示批量修改已经成功。这边需要注意的是索引是什么类型的数据,修改的时候传入的数据类型就必须是什么类型的数据。

3.批量删除索引
/**
* 批量删除索引
* @throws IOException
*/
@Test
public void batchDeleteIndex() throws IOException {
BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareDelete("batch_test1", "batch", "1"));
bulkRequest.add(client.prepareDelete("batch_test2", "batch", "2"));
BulkResponse bulkResponse = bulkRequest.get();
if (bulkResponse.hasFailures()) {
System.out.println("failures.............:"+bulkResponse.buildFailureMessage()
);
}
}
Java API批量操作Elasticsearch
如图所示,数据已经被清空了,所以表示删除操作是成功的。

注意事项:
1.记住索引不能大写
2.保存的是什么类型的,修改也必须是对应的类型
3.记住只有批量添加修改删除,没有批量查询操作

对文章有什么疑问或者想要看更多文章可以加我订阅号,欢迎大家的踩踩~

Java API批量操作Elasticsearch