Elasticsearch的Bulk API使用

news/2024/7/4 9:29:06 标签: Elasticsearch, bulk, 批量操作

1、Elasticsearch的Bulk API允许批量提交index和delete请求。如:
(1)用法1

BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareIndex("index1", "type1", "id1").setSource(source);
bulkRequest.add(client.prepareIndex("index2", "type2", "id2").setSource(source);
BulkResponse bulkResponse = bulkRequest.execute().actionGet();

(2)用法二

BulkProcessor bulkProcessor = BulkProcessor.builder(  
        client,    
        new BulkProcessor.Listener() {  
            @Override  
            public void beforeBulk(long executionId,  
                                   BulkRequest request) { ... }   

            @Override  
            public void afterBulk(long executionId,  
                                  BulkRequest request,  
                                  BulkResponse response) { ... }   

            @Override  
            public void afterBulk(long executionId,  
                                  BulkRequest request,  
                                  Throwable failure) { ... }   
        })  
        .setBulkActions(10000)   
        .setBulkSize(new ByteSizeValue(1, ByteSizeUnit.GB))   
        .setFlushInterval(TimeValue.timeValueSeconds(5))   
        .build();  
bulkProcessor.add(new IndexRequest("index1", "type1", "id1").source(source1));  
bulkProcessor.add(new DeleteRequest("index2", "type2", "id2"); 

(3)说明
1)beforeBulk会在批量提交之前执行,可以从BulkRequest中获取请求信息request.requests()或者请求数量request.numberOfActions()。
2) 第一个afterBulk会在批量成功后执行,可以跟beforeBulk配合计算批量所需时间。
3)第二个afterBulk会在批量失败后执行。
4)在例子中,当请求超过10000个(default=1000)或者总大小超过1GB(default=5MB)时,触发批量提交动作。
 


http://www.niftyadmin.cn/n/1639132.html

相关文章

[HeadFirst]观察者模式 - 老王跳灰机的故事

写博客,看博客,要的是直接进入主题,不要太多的前戏,否则读者看着看着就没了兴趣。 所以直接看设计模式-观察者模式的图示介绍: 所谓的主题,即被观者的对象,当这个对象发生变化的时候&#xff0…

Elasticsearch批量索引和删除

批量索引和删除 Java代码 收藏代码 BulkRequestBuilder bulkRequest client.prepareBulk(); for(int i500;i<1000;i){ //业务对象 String json ESUtils.toJson(new LogModel()); IndexRequestBuilder indexReques…

[Memcache] 初探Memcache

Memcache (http://memcached.org/) memcache 是一种分布式缓存服务器&#xff0c;和通常使用的非分布式的ecache不同&#xff0c;memcache需要独立的服务器支撑&#xff0c;客户端通过配置IP地址和端口号&#xff08;默认11211&#xff09;与之连接并使用API进行数据的缓存操作…

[JST]不支持for(var i=0;ilength;i++)问题解决方法

Trimpath的循环语法支持遍历列表或者数组&#xff0c;如果我们在模板中希望能够使用传统的for循环的方式 for(var i0;i<length;i) 来实现根据定义数字大小指定遍历次数&#xff0c;则无法使用{for(i in length)}来完成&#xff0c;因为length不是列表也不是数组&#xff0c;…

[lucene]使用lucene建立网站搜索服务

lucene是一个全文检索引擎&#xff08;非分布式&#xff09;&#xff0c;使用java编写并且可以很方便的嵌入到各种系统中以实现全文检索功能&#xff0c;其通过对字符串进行分词&#xff0c;然后针对分词结果分别建立索引&#xff0c;存入内存或者磁盘&#xff0c;以提供搜索服…

Elasticsearch性能优化建议

之前公司项目中有使用Elasticsearch存储日志&#xff0c;当时使用的功能简单&#xff0c;并没有深入了解Elasticsearch&#xff0c;但是对于该支持文本搜索的存储架构还是很感兴趣&#xff0c;最近因为想在一个新项目中采用ELK&#xff08;ElasticsearchLogstashKibana&#xf…

elasticsearch 查询优化建议

最近在做一些索引相关的优化测试&#xff0c;顺便记录一下测试以及效果 1&#xff1a;优化mapping 主要包括 doc_values , index , norms &#xff0c; type的keyword和text // 效果明显 doc_values属性 用于把数据序列化到磁盘&#xff0c;使索引结构更紧密 默认为tru…

[lucene第二季]利用缓存辅助精确更新索引

在上一篇的lucene的入门篇中&#xff0c;我们编写了一个帮助系统&#xff0c;从数据库中将具体的信息获取出来并使用CJKAnalyzer分词后建立索引&#xff0c;提供针对于关键字的搜索服务&#xff0c;其中我们采用定时器的方式每隔10分钟更新一次索引&#xff0c;更新的方式为先删…