在 Spring Data ElasticSearch 中一次批量索引多个文档,如何?

分享于2022年07月17日 elasticsearch spring-data spring-data-elasticsearch 问答
【问题标题】:在 Spring Data ElasticSearch 中一次批量索引多个文档,如何?(Bulk indexing multiple documents at once in Spring Data ElasticSearch, how?)
【发布时间】:2022-01-19 02:53:59
【问题描述】:

https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html 中似乎没有任何与批量操作相关的内容,例如一次批量索引多个文档

它甚至被支持吗?有什么例子吗?

谢谢!


【解决方案1】:

你可以尝试如下:

例如:假设您有 10 个文档要批量索引。

BulkRequest bulkRequest=new BulkRequest();

然后对于每个文档(在 for 循环内)

  bulkRequest.add(new IndexRequest(doc.getIndex())
                    .id(doc.getId())
                    .source(doc.getSource().toString(), XContentType.JSON));

最后,使用 RestHighLevelClient 实例调用 Elasticsearch。

BulkResponse bulkResponse=restHighLevelClientInstance.bulk(brb, RequestOptions.DEFAULT);

注意:BulkRequest、IndexRequest 和 BulkResponse 是来自 Elasticsearch 的类。

  • 你说的是 Elasticsearch Java API 还是 Spring Data ElasticSearch?