首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧弹性搜索-批量保存多个指数在一行?

弹簧弹性搜索-批量保存多个指数在一行?
EN

Stack Overflow用户
提问于 2022-11-15 10:23:31
回答 2查看 40关注 0票数 0

我有多个具有不同索引名的文档,批量保存在elasticsearch中:

代码语言:javascript
复制
public void bulkCreateOrUpdate(List personUpdateList, List addressUpdateList, List positionUpdateList) {
    this.operations.bulkUpdate(personUpdateList,Person.class);
    this.operations.bulkUpdate(addressUpdateList, Address.class);
    this.operations.bulkUpdate(positionUpdateList, Position.class);
}

但是,是否仍然可以通过只调用一行,保存多个不同索引类型的列表来进行优化?

EN

回答 2

Stack Overflow用户

发布于 2022-11-15 10:32:55

Tldr;

当然,散装api允许这样做。

这是一个有效的呼叫

代码语言:javascript
复制
POST _bulk
{"index":{"_index":"index_1"}}
{"data":"data"}
{"index":{"_index":"index_2"}}
{"data":"data"}

你的Java客户怎么处理它..。我不确定。

解决方案

可以这样做:

代码语言:javascript
复制
BulkRequest.Builder br = new BulkRequest.Builder();

br.operations(op -> op           
        .index(idx -> idx            
            .index("index_1")       
            .id("1")
            .document(document)
        )
    );

br.operations(op -> op           
        .index(idx -> idx            
            .index("index_2")       
            .id("1")
            .document(document)
        )
    );

可以这样做:

代码语言:javascript
复制
BulkRequest request = new BulkRequest(); 

request.add(new IndexRequest("index_1").id("1")  
        .source(XContentType.JSON,"data", "data"));
request.add(new IndexRequest("index_2").id("1")  
        .source(XContentType.JSON,"data", "data"));
票数 0
EN

Stack Overflow用户

发布于 2022-11-15 19:58:52

对于:

ElasticsearchOperations.bulkXXX()方法以一个List<IndexQuery>作为第一个参数。可以在每个对象上设置索引名,以指定应在哪个索引中写入/更新数据。使用从最后一个参数(实体类或IndexCoordinates对象)获取的索引名,以防在IndexQuery中没有设置索引名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74444019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档