提交之前
提交之后
数据查看
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;
}
}
原创不易,欢迎打赏,请认准正确地址,谨防假冒
相关推荐
在`bulkSaveToEs`方法中,我们使用Elasticsearch的Bulk API进行批量保存,这能显著提高插入效率。`parseLog`方法根据实际日志格式解析并转换日志数据。 为了实现“百万日志秒处理”的目标,我们需要注意优化以下几...
4. **使用`curl`命令**:在命令行中,使用`curl`发送POST请求到ElasticSearch的 `_bulk` API,这个API专门用于批量操作。 ```bash curl -X POST "localhost:9200/your_index_name/_bulk?pretty" -H 'Content-Type...
插件的工作原理主要是利用Elasticsearch的Bulk API,该API允许一次性提交多个索引、更新或删除操作,从而减少网络通信开销并提高整体性能。通过这个插件,Kettle作业或转换中的步骤能够将数据分组并以批量方式发送到...
为了进一步提高批量操作(如插入、更新或删除大量文档)的效率,Elasticsearch 提供了 Bulk API 和 BulkProcessor,通过它们可以有效地提升性能。 #### 二、添加 pom 依赖 在进行 BulkProcessor 的开发之前,首先...
从文件或stdin中读取数据,然后批量和并行地将其索引到elasticsearch中。 最短的命令是: $ esbulk -index my-index-name < file.ldj 注意:如果批量API的索引压力过高(数十个或数百个并行工作程序,大批处理...
6. **性能优化**:为了减少对HBase主服务的影响,可以考虑批量提交数据到Elasticsearch,或者利用Elasticsearch的Bulk API。此外,可以通过调整Coprocessor的优先级来平衡实时性和系统资源。 在提供的压缩包文件"**...
在"elasticsearch5.6以上version通用java API"中,我们将会探讨如何利用Java编写工具类,以覆盖更全面的操作,如映射创建、批量插入、聚合查询以及模糊和精确查询。 1. **映射创建**:Elasticsearch的映射(Mapping...
Elasticsearch是一个强大的开源搜索引擎,基于Lucene,它提供了分布式、实时、可扩展的数据存储和检索功能。在Java环境中操作Elasticsearch,我们通常会利用官方提供的Java API,这是一个非常全面且强大的工具集,让...
4. 使用Elasticsearch客户端,定期或达到一定数量后提交批量请求。 5. 错误处理和重试机制,确保数据能正确索引到Elasticsearch。 6. 日志管理和监控,确保所有错误和异常都被记录和报警。 通过这种方式,项目可以...
SpringBoot集成Elasticsearch(ES)是一个常见的技术实践,它使得在Java应用中使用这个强大的全文搜索引擎变得简单。本文将详细讲解如何通过SpringBoot与Elasticsearch进行交互,包括创建索引、添加记录、查询记录、...
Elasticsearch提供了`BulkProcessor`服务,它能帮助你在后台处理批量索引请求。你可以设置批量操作的大小、延迟和失败重试策略,这样在处理大量数据时,可以避免频繁的网络交互,提升性能。 在实际应用中,你可能还...
在IT行业中,Elasticsearch(ES)是一种广泛使用的开源全文搜索引擎,它基于Lucene构建,提供了分布式、实时、可扩展的搜索和分析能力。本文将深入探讨如何利用Java API与Elasticsearch进行集成,分为基础使用和高级...
`ESCommon.Bulk`方法可能实现了批量插入、更新或删除,将一系列操作一次性发送到Elasticsearch。 10. **错误处理和重试机制**:在与Elasticsearch交互时,可能遇到网络问题或服务器异常。`ESCommon`类可能包含了...
倒排索引的优势在于,当用户提交一个查询时,Elasticsearch 可以迅速找到包含所有查询词项的文档,大大提高了搜索效率。这种索引结构特别适合处理大规模的文本数据,使得 Elasticsearch 成为了现代搜索引擎和日志...
随着大数据技术的发展与广泛应用,如何高效地将大量数据从消息队列(如Kafka)导入到搜索引擎(如Elasticsearch,简称ES)成为了一个重要的课题。本文将详细介绍如何利用Python来实现这一过程,并通过具体的代码示例...
- Bulk API:批量操作接口,允许一次性提交多个索引、更新或删除请求,降低网络开销,提高吞吐量。 10. **实时分析** - Elasticsearch支持实时数据分析,可以对流入的数据进行即时的聚合和分析,满足实时监控和...
例如,使用POST或PUT方法向/_bulk接口提交批量文档,使用GET方法查询索引中的数据,使用DELETE方法删除指定文档。 搜索是Elasticsearch的核心功能,它基于Lucene库实现,支持全文搜索、短语搜索、模糊搜索、布尔...
1. **批量大小优化**:调整Logstash的批量大小,减少单次提交的文档数量,以降低对Elasticsearch的压力。 2. **索引结构优化**:根据实际业务需求,合理设置分片数量。过多的分片可能导致资源分散,影响效率。 3. ...
**Elasticsearch 2016-8与Java编程接口** Elasticsearch 是一个高度可扩展的开源全文搜索引擎,设计用于快速、准确实时地处理大量数据。它基于 Lucene 库,但提供了更高级别的封装,使得开发人员能够轻松地在应用...