版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1434252
上一节讲到如何对索引进行增删改查操作,但是都是针对于单个的来说,这节课就开始介绍如何批量的创建、修改、删除索引。废话不多说,我们直接看具体代码。
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()
);
}
}
如图所示:批量创建的两个索引,在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()
);
}
}
如图所示,表示批量修改已经成功。这边需要注意的是索引是什么类型的数据,修改的时候传入的数据类型就必须是什么类型的数据。
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()
);
}
}
如图所示,数据已经被清空了,所以表示删除操作是成功的。
注意事项:
1.记住索引不能大写
2.保存的是什么类型的,修改也必须是对应的类型
3.记住只有批量添加修改删除,没有批量查询操作