上一节讲到如何对索引进行增删改查操作,但是都是针对于单个的来说,这节课就开始介绍如何批量的创建、修改、删除索引。废话不多说,我们直接看具体代码。
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.记住只有批量添加修改删除,没有批量查询操作
对文章有什么疑问或者想要看更多文章可以加我订阅号,欢迎大家的踩踩~