Spring数据elasticsearch批量索引和删除

Posted

技术标签:

【中文标题】Spring数据elasticsearch批量索引和删除【英文标题】:Spring data elasticsearch bulk index and delete 【发布时间】:2017-10-28 20:07:41 【问题描述】:

我是社区的新手,所以如果我做错了什么,我深表歉意。

我正在使用 spring data elasticsearch (2.0.4/2.4) 我想做一个批量插入和删除。 但是 ElasticsearchTemplate 只包含一个方法 bulkInsert

@Override
public void bulkIndex(List<IndexQuery> queries) 
    BulkRequestBuilder bulkRequest = client.prepareBulk();
    for (IndexQuery query : queries) 
        bulkRequest.add(prepareIndex(query));
    
    BulkResponse bulkResponse = bulkRequest.execute().actionGet();
    if (bulkResponse.hasFailures()) 
        Map<String, String> failedDocuments = new HashMap<String, String>();
        for (BulkItemResponse item : bulkResponse.getItems()) 
            if (item.isFailed())
                failedDocuments.put(item.getId(), item.getFailureMessage());
        
        throw new ElasticsearchException(
                "Bulk indexing has failures. Use ElasticsearchException.getFailedDocuments() for detailed messages ["
                        + failedDocuments + "]", failedDocuments
        );
    

所以我创建了一个批量方法来处理两者,但我无法访问私有方法 prepareIndex。

您是否知道批量索引和删除文档的任何解决方案,或者我应该使用反射来更改 prepareIndex 方法的可见性 或者有什么简单的方法可以从模型/POJO 创建 indexRequest?

【问题讨论】:

【参考方案1】:

不确定你指的是哪个版本

(2.0.4/2.4)

目前无法进行批量删除。并且不能在一个请求中组合不同的操作,例如索引/更新。

您能否提交issue in Jira 以添加对批量删除的支持以及在一次通话中进行不同操作的可能性?虽然这不会进入下一个版本,但恐怕。

【讨论】:

以上是关于Spring数据elasticsearch批量索引和删除的主要内容,如果未能解决你的问题,请参考以下文章

es批量索引

elasticsearch java插入索引批量操作

elasticsearch中文档操作,索引导入数据批量导入删除文档

elasticsearch中文档操作,索引导入数据批量导入删除文档

elasticsearch中文档操作,索引导入数据批量导入删除文档

Elasticsearch5.0 Java Api -- 批量导入索引