如何在 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 而不是单独的构建器。