如何在 Spring 数据 elasticsearch 中使用 elasticsearchOperations 进行批量更新?
How to do bulk update using elasticsearchOperations in Spring data elasticsearch?
我们使用 bulkIndex 进行批量插入,如下所示:
List<IndexQuery> indexQueries = new ArrayList<>();
for (FooDocument fooDocument : fooDocuments) {
IndexQuery query = new IndexQueryBuilder()
.withId(String.valueOf(fooDocument.getId()))
.withObject(fooDocument)
.build();
indexQueries.add(query);
}
elasticsearchOperations.bulkIndex(indexQueries, IndexCoordinates.of("foo_index_3"));
我们还想用于批量更新,例如:
elasticsearchOperations.bulkUpdate(updateQueries, IndexCoordinates.of("foo_index_3"));
但是 bulkUpdate 需要 UpdateQuery
的列表。我正在尝试通过执行以下操作来创建它:
List<IndexQuery> updateQueries = new ArrayList<>();
for (FooDocument fooDocument : fooDocuments) {
UpdateQuery updateQuery = new UpdateQueryBuilder()//which Builder class and method is required?
.withId(String.valueOf(fooDocument.getId()))
.withObject(fooDocument)
.build();
updateQueries.add(query);
}
但与 IndexQueryBuilder
不同,没有 UpdateQueryBuilder()
可用,构建 UpdateQuery
的正确方法是什么,我们应该使用哪个 Builder
class ?我想知道 UpdateQueryBuilder
class 是否已被弃用。
P.S:我们正在使用 4.0.2.RELEASE
版本的 spring-data-elasticsearch
您使用这样的生成器创建了一个 UpdateQuery
:
UpdateQuerybuilder builder = UpdateQuery.builder(id)
.with(...)
.build();
此处的构建器是嵌套的 class 而不是单独的构建器。
我们使用 bulkIndex 进行批量插入,如下所示:
List<IndexQuery> indexQueries = new ArrayList<>();
for (FooDocument fooDocument : fooDocuments) {
IndexQuery query = new IndexQueryBuilder()
.withId(String.valueOf(fooDocument.getId()))
.withObject(fooDocument)
.build();
indexQueries.add(query);
}
elasticsearchOperations.bulkIndex(indexQueries, IndexCoordinates.of("foo_index_3"));
我们还想用于批量更新,例如:
elasticsearchOperations.bulkUpdate(updateQueries, IndexCoordinates.of("foo_index_3"));
但是 bulkUpdate 需要 UpdateQuery
的列表。我正在尝试通过执行以下操作来创建它:
List<IndexQuery> updateQueries = new ArrayList<>();
for (FooDocument fooDocument : fooDocuments) {
UpdateQuery updateQuery = new UpdateQueryBuilder()//which Builder class and method is required?
.withId(String.valueOf(fooDocument.getId()))
.withObject(fooDocument)
.build();
updateQueries.add(query);
}
但与 IndexQueryBuilder
不同,没有 UpdateQueryBuilder()
可用,构建 UpdateQuery
的正确方法是什么,我们应该使用哪个 Builder
class ?我想知道 UpdateQueryBuilder
class 是否已被弃用。
P.S:我们正在使用 4.0.2.RELEASE
版本的 spring-data-elasticsearch
您使用这样的生成器创建了一个 UpdateQuery
:
UpdateQuerybuilder builder = UpdateQuery.builder(id)
.with(...)
.build();
此处的构建器是嵌套的 class 而不是单独的构建器。