`
gaojingsong
  • 浏览: 1210761 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【elasticsearch之批量提交Bulk】

阅读更多

提交之前

 

提交之后



 数据查看



 

ES批量提交代码如下:

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.entity.StringEntity;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.util.EntityUtils;

 

import com.alibaba.fastjson.JSONObject;

 

public class ImportDB2ES {

 

/**

* @param args

 

The REST API endpoint is /_bulk, and it expects the following JSON structure:

action_and_meta_data\n

optional_source\n

action_and_meta_data\n

optional_source\n

....

action_and_meta_data\n

optional_source\n

 

POST _bulk

{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }

{ "field1" : "value1" }

{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }

{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }

{ "field1" : "value3" }

{ "update" : {"_id" : "1", "_type" : "type1", "_index" : "test"} }

{ "doc" : {"field2" : "value2"} }

@author http://gaojingsong.iteye.com/

*/

public static void main(String[] args) {

 

String url = "http://192.168.1.104:9200/_bulk";

List<Student> list = new ArrayList<Student>();

//1、准备数据阶段

list.add(new Student("1","zhangsan1",13));

list.add(new Student("2","zhangsan2",23));

list.add(new Student("3","zhangsan3",33));

list.add(new Student("4","zhangsan4",43));

//2、构造Json阶段

String json  = toBatchJSon(list,"test_bulk");

System.out.println(json);

//3、批量提交阶段

try {

httpPostWithJSON(url,json);

} catch (Exception e) {

e.printStackTrace();

}

}

 

public static String toBatchJSon(List list,String indexname) {

StringBuffer sb = new StringBuffer();

int i=0;

for (@SuppressWarnings("rawtypes")

Iterator iterator = list.iterator(); iterator.hasNext();) {

JSONObject json = (JSONObject) JSONObject.toJSON(iterator.next());

++i;

String str="{ \"create\" : { \"_index\" : \""+indexname+"\", \"_type\" : \"type1\", \"_id\" : \""+i+"\" } }";

sb.append(str).append("\n");

sb.append(json).append("\n");

}

return sb.toString();

 

}

 

public static String httpPostWithJSON(String url,String json) throws Exception {

     

       HttpPost httpPost = new HttpPost(url);

       CloseableHttpClient client = HttpClients.createDefault();

       String respContent = null;

       StringEntity entity = new StringEntity(json,"utf-8");//解决中文乱码问题    

       entity.setContentEncoding("UTF-8");    

       entity.setContentType("application/json");    

       httpPost.setEntity(entity);

       System.out.println();

       

       HttpResponse resp = client.execute(httpPost);

       if(resp.getStatusLine().getStatusCode() == 200) {

           HttpEntity he = resp.getEntity();

           respContent = EntityUtils.toString(he,"UTF-8");

       }

       return respContent;

   }

}

 



 

 原创不易,欢迎打赏,请认准正确地址,谨防假冒



 

 

 



 

 
  • 大小: 48.2 KB
  • 大小: 53 KB
  • 大小: 56.8 KB
  • 大小: 58.1 KB
0
0
分享到:
评论

相关推荐

    springBoot整合kafka和elasticSearch,实现批量拉取日志以及批量更新到es里

    在`bulkSaveToEs`方法中,我们使用Elasticsearch的Bulk API进行批量保存,这能显著提高插入效率。`parseLog`方法根据实际日志格式解析并转换日志数据。 为了实现“百万日志秒处理”的目标,我们需要注意优化以下几...

    curl.rar ElasticSearch 批量导入一批数据

    4. **使用`curl`命令**:在命令行中,使用`curl`发送POST请求到ElasticSearch的 `_bulk` API,这个API专门用于批量操作。 ```bash curl -X POST "localhost:9200/your_index_name/_bulk?pretty" -H 'Content-Type...

    elasticsearch-bulk-insert-plugin-9插件,支持ES7.16

    插件的工作原理主要是利用Elasticsearch的Bulk API,该API允许一次性提交多个索引、更新或删除操作,从而减少网络通信开销并提高整体性能。通过这个插件,Kettle作业或转换中的步骤能够将数据分组并以批量方式发送到...

    Elasticsearch BulkProcessor 的具体实现.pdf

    为了进一步提高批量操作(如插入、更新或删除大量文档)的效率,Elasticsearch 提供了 Bulk API 和 BulkProcessor,通过它们可以有效地提升性能。 #### 二、添加 pom 依赖 在进行 BulkProcessor 的开发之前,首先...

    esbulk:用于Elasticsearch的批量索引命令行工具

    从文件或stdin中读取数据,然后批量和并行地将其索引到elasticsearch中。 最短的命令是: $ esbulk -index my-index-name &lt; file.ldj 注意:如果批量API的索引压力过高(数十个或数百个并行工作程序,大批处理...

    使用Hbase协作器(Coprocessor)同步数据到ElasticSearch(hbase 版本 1.2.0-cdh5.8.0, es 2.4.0 版本)

    6. **性能优化**:为了减少对HBase主服务的影响,可以考虑批量提交数据到Elasticsearch,或者利用Elasticsearch的Bulk API。此外,可以通过调整Coprocessor的优先级来平衡实时性和系统资源。 在提供的压缩包文件"**...

    elasticsearch5.6以上version通用java API

    在"elasticsearch5.6以上version通用java API"中,我们将会探讨如何利用Java编写工具类,以覆盖更全面的操作,如映射创建、批量插入、聚合查询以及模糊和精确查询。 1. **映射创建**:Elasticsearch的映射(Mapping...

    elasticsearch java操作的api实例

    Elasticsearch是一个强大的开源搜索引擎,基于Lucene,它提供了分布式、实时、可扩展的数据存储和检索功能。在Java环境中操作Elasticsearch,我们通常会利用官方提供的Java API,这是一个非常全面且强大的工具集,让...

    amqp-node-elastic-bulk:从 amqp 收集数据并发送到 elasticsearch 批量 API

    4. 使用Elasticsearch客户端,定期或达到一定数量后提交批量请求。 5. 错误处理和重试机制,确保数据能正确索引到Elasticsearch。 6. 日志管理和监控,确保所有错误和异常都被记录和报警。 通过这种方式,项目可以...

    springboot_es_demo.rar

    SpringBoot集成Elasticsearch(ES)是一个常见的技术实践,它使得在Java应用中使用这个强大的全文搜索引擎变得简单。本文将详细讲解如何通过SpringBoot与Elasticsearch进行交互,包括创建索引、添加记录、查询记录、...

    file2es_invented5qw_javajsones_elasticsearch_

    Elasticsearch提供了`BulkProcessor`服务,它能帮助你在后台处理批量索引请求。你可以设置批量操作的大小、延迟和失败重试策略,这样在处理大量数据时,可以避免频繁的网络交互,提升性能。 在实际应用中,你可能还...

    ElasticSearch整合JavaApi代码

    在IT行业中,Elasticsearch(ES)是一种广泛使用的开源全文搜索引擎,它基于Lucene构建,提供了分布式、实时、可扩展的搜索和分析能力。本文将深入探讨如何利用Java API与Elasticsearch进行集成,分为基础使用和高级...

    C# ES通用类demo

    `ESCommon.Bulk`方法可能实现了批量插入、更新或删除,将一系列操作一次性发送到Elasticsearch。 10. **错误处理和重试机制**:在与Elasticsearch交互时,可能遇到网络问题或服务器异常。`ESCommon`类可能包含了...

    Elasticsearch 28道面试题和答案.docx

    倒排索引的优势在于,当用户提交一个查询时,Elasticsearch 可以迅速找到包含所有查询词项的文档,大大提高了搜索效率。这种索引结构特别适合处理大规模的文本数据,使得 Elasticsearch 成为了现代搜索引擎和日志...

    python消费kafka数据批量插入到es的方法

    随着大数据技术的发展与广泛应用,如何高效地将大量数据从消息队列(如Kafka)导入到搜索引擎(如Elasticsearch,简称ES)成为了一个重要的课题。本文将详细介绍如何利用Python来实现这一过程,并通过具体的代码示例...

    elasticsearch源码

    - Bulk API:批量操作接口,允许一次性提交多个索引、更新或删除请求,降低网络开销,提高吞吐量。 10. **实时分析** - Elasticsearch支持实时数据分析,可以对流入的数据进行即时的聚合和分析,满足实时监控和...

    elastic-search.zip

    例如,使用POST或PUT方法向/_bulk接口提交批量文档,使用GET方法查询索引中的数据,使用DELETE方法删除指定文档。 搜索是Elasticsearch的核心功能,它基于Lucene库实现,支持全文搜索、短语搜索、模糊搜索、布尔...

    解决ElasticSearch 7.x 设置大分片的时,导入数据发生rejected 429

    1. **批量大小优化**:调整Logstash的批量大小,减少单次提交的文档数量,以降低对Elasticsearch的压力。 2. **索引结构优化**:根据实际业务需求,合理设置分片数量。过多的分片可能导致资源分散,影响效率。 3. ...

    elasticsearch-2016-8最新java代码

    **Elasticsearch 2016-8与Java编程接口** Elasticsearch 是一个高度可扩展的开源全文搜索引擎,设计用于快速、准确实时地处理大量数据。它基于 Lucene 库,但提供了更高级别的封装,使得开发人员能够轻松地在应用...

Global site tag (gtag.js) - Google Analytics