java es 数据批量导入_ElasticSearch—Java批量导入导出

网上找了很多,我的es是2.3.5版本,网上的客户端最少都是5.x版本,所以没有能用的。自己整合了一下 2.3.5版本的。

pom文件:

org.elasticsearch

elasticsearch

2.3.5

com.alibaba

fastjson

1.1.35

org.apache.commons

commons-io

1.3.2

org.apache.commons

commons-lang3

3.1

代码:

package com.topcom.tjs.create.elaticsearch;

import org.apache.commons.lang3.StringUtils;

import org.elasticsearch.action.bulk.BulkRequestBuilder;

import org.elasticsearch.action.bulk.BulkResponse;

import org.elasticsearch.action.index.IndexRequest;

import org.elasticsearch.action.search.SearchRequestBuilder;

import org.elasticsearch.action.search.SearchResponse;

import org.elasticsearch.bootstrap.Elasticsearch;

import org.elasticsearch.client.transport.TransportClient;

import org.elasticsearch.common.settings.Settings;

import org.elasticsearch.common.transport.InetSocketTransportAddress;

import org.elasticsearch.common.unit.TimeValue;

import org.elasticsearch.index.query.QueryBuilders;

import org.elasticsearch.search.SearchHit;

import java.io.*;

import java.net.InetAddress;

import java.net.InetSocketAddress;

/**

* @author rstyro

*/

public class ElasticSearch {

public static void main(String[] args) throws Exception {

String clustName = "tc-es";

String indexName = "yuqing_0006_6";

String clusttIp = "192.168.1.14";

int clustPort = 20069;

String filePath = "I:\\data\\data\\esdata.json";

String typeName = "article";

//outToFile(clustName, indexName, typeName, clusttIp, clustPort, filePath);

fileToEs(clustName, indexName, typeName, clusttIp, clustPort, filePath);

}

/**

* elasticsearch 数据到文件

*

* @param clustName 集群名称

* @param indexName 索引名称

* @param typeName type名称

* @param sourceIp ip

* @param sourcePort transport 服务端口

* @param filePath 生成的文件路径

*/

public static void outToFile(String clustName, String indexName, String typeName, String sourceIp, int sourcePort, String filePath) throws Exception {

TransportClient client = createClient(clustName, sourceIp, sourcePort);

SearchRequestBuilder builder = client.prepareSearch(indexName);

if (typeName != null) {

builder.setTypes(typeName);

}

builder.setQuery(QueryBuilders.matchAllQuery()).setQuery(QueryBuilders.matchQuery("type","NEWS"));

builder.setSize(10000);

builder.setScroll(new TimeValue(6000));

SearchResponse scrollResp = builder.execute().actionGet();

try {

//把导出的结果以JSON的格式写到文件里

BufferedWriter out = new BufferedWriter(new FileWriter(filePath, true));

long count = 0;

while (true) { //循环插入,直到所有结束

for (SearchHit hit : scrollResp.getHits().getHits()) {

String json = hit.getSourceAsString();

if (StringUtils.isNotEmpty(json) && !"".equals(json)) {

out.write(json);

out.write("\r\n");

count++;

System.out.println("*******************"+count);

}

}

scrollResp = client.prepareSearchScroll(scrollResp.getScrollId())

.setScroll(new TimeValue(6000)).execute().actionGet();

if (scrollResp.getHits().getHits().length == 0) {

break;

}

}

System.out.println("总共写入数据:" + count);

out.close();

client.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 把json 格式的文件导入到elasticsearch 服务器

*

* @param clustName 集群名称

* @param indexName 索引名称

* @param typeName type 名称

* @param sourceIp ip

* @param sourcePort 端口

* @param filePath json格式的文件路径

*/

@SuppressWarnings("deprecation")

public static void fileToEs(String clustName, String indexName, String typeName, String sourceIp, int sourcePort, String filePath) throws Exception {

TransportClient client = createClient(clustName, sourceIp, sourcePort);

try {

//把导出的结果以JSON的格式写到文件里

BufferedReader br = new BufferedReader(new FileReader(filePath));

String json = null;

int count = 0;

//开启批量插入

BulkRequestBuilder bulkRequest = client.prepareBulk();

while ((json = br.readLine()) != null) {

bulkRequest.add(client.prepareIndex(indexName, typeName).setSource(json));

//每一千条提交一次

count++;

if (count % 1000 == 0) {

System.out.println("本次提交了1000条");

BulkResponse bulkResponse = bulkRequest.execute().actionGet();

if (bulkResponse.hasFailures()) {

System.out.println("message:" + bulkResponse.buildFailureMessage());

}

//重新创建一个bulk

bulkRequest = client.prepareBulk();

}

}

bulkRequest.execute().actionGet();

System.out.println("总提交了:" + count);

br.close();

client.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 建立连接

* @param cluster

* @param ip

* @param port

* @return

* @throws Exception

*/

private static TransportClient createClient(String cluster, String ip, Integer port) throws Exception {

TransportClient client = null;

if (client == null) {

synchronized (Elasticsearch.class) {

Settings settings = Settings.settingsBuilder().put("cluster.name", cluster).build();

client = TransportClient.builder().settings(settings).build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip),

port));

}

}

return client;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java原始模型模式_java设计模式--原始模型模式

简介原始模型模式属于对象的创建模式。通过一个原型对象来指明要创建对象的类型,然后用复制原型对象的方法来创建出更多同类型的对象。Java所有的类都是从java.lang.Object类继承来的,Object类提供clone()方法对对象进行复制。一般调用clone()方法需要满…

Windows的命令行窗口运行Python时,如何清屏?

问题 如标题 解法 import os os.system("cls")参考 python实现清屏

手写文字识别java_java 手写文字图片识别提取 百度API

package org.fh.util;import org.json.JSONObject;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.List;import java.util.Map;/*** 说明:获取文字识别token类* from&am…

LeetCode - Easy - 191. Number of 1 Bits

Topic Bit Manipulation Description https://leetcode.com/problems/number-of-1-bits/ Write a function that takes an unsigned integer and returns the number of ‘1’ bits it has (also known as the Hamming weight). Note: Note that in some languages such …

java并行计算同步返回_Java大文本并行计算实现过程解析

Java大文本并行计算实现过程解析简单提高文本读取效率,使用BufferedReader是个不错的选择。速度最快的方法是MappedByteBuffer,但是,相比BufferedReader而言,效果不是非常明显。也就是说,后者虽然快,但也快…

wgs utm java,Java,将经纬度转换为UTM

Does anyone know of a way, in Java, to convert an earth surface position from lat, lon to UTM (say in WGS84)? Im currently looking at Geotools but unfortunately the solution is not obvious.解决方案I was able to use Geotools 2.4 to get something that works…

java 指定时间转换_Java中使用Calendar进行获取指定时间,使用SimpleDateFormat进行格式化转换...

java中使用Calendar获取指定的时间public class DateTranslate {/*** 获取指定日期的间隔月份的第一天的日期* param date* param sep* return*/public static Date getMonthFirstDay(Date date, Integer sep) {Calendar cal Calendar.getInstance();cal.setTime(getThisWeekM…

java mvc 菜鸟_【java框架】SpringMVC(1)--SpringMVC入门

1.SpringMVC框架认识Spring MVC是一个基于MVC模式的Web框架,SpringMVC作为Spring中的一个模块,它与Spring能够无缝集成,主要用于解决企业Web开发中常见的问题:如参数接收、文件上传、表单验证、国际化等等。2.SpringMVC HelloWorl…

php设置cookie 域名,php如何设置cookie对整个域名有效?

php设置cookie对整个域名有效的方法:由setcookie函数让cookie对整个域名有效,代码为【setcookie("cookie_test", this is cookie test, time()3600,"/",“】。php设置cookie对整个域名有效的方法:默认情况下的cookie仅对…

php 配置 gd2,配置PHP对gd库的支持

搭建zabbix的时候遇到有对PHP的需求检测,发现没有对gd的支持,记录下。。。GD库是php处理图形的扩展库,它提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印。1、安装zl…

我的世界一个程序导致JAVA,Java地位无可动摇的12个原因

如今,面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上或许会成为下一个COBOL。有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年…

php 自定义格式化,PHP自定义函数格式化json数据示例

本文实例讲述了PHP自定义函数格式化json数据的方法。分享给大家供大家参考,具体如下:/*** Formats a JSON string for pretty printing** param string $json The JSON to make pretty* param bool $html Insert nonbreaking spaces and s for tabs and …

php 单选框选中事件,html中的checkbox和radio事件选择用法详解

radio注册了click事件以后,神奇的是用键盘上的上下左右选择时,居然会触发鼠标事件,滚轮也会触发,这种神奇的事情在mousedown下面是不会发生的。(webkit不能使用上下左右选择)checkbox注册click事件后,奇迹再次上演&…

java水文模型,分布式水文模型.ppt

分布式水文模型ppt课件第九章分布式水文模拟技术 第九章 分布式水文模拟技术 9.1 分布式水文模型的发展 9.1.1 分布式水文模型的研究进展 9.1.1.2 几点讨论 9.1.2 分布式水文模型的发展 9.2 基于DEM的流域分布式水文模型 9.2.1 流域水文过程及其数学模拟 流域水循环过程示意图 …

php 实现的n,php 实现数据N等分。

本例给出实现3等分的代码和运行结果。在保证&#xff0c;每一个部分都不会宕机的情况下&#xff0c;这种算法是最简单的。否则就用一致性哈希算法。公式原理&#xff1a;求余算法: hash(object)%Nfor($i 1;$i<100;$i){$result crc32($i) % 3;echo "i:".$i . &qu…

ccf json解析 java,【求助】e4a json解析 求助大佬帮忙老看下怎么取?

[PHP] 纯文本查看 复制代码[{"title":"\u4e1c\u98ce\u7834","url":"\/tv\/QrRobH7kTGTqNX.html","star":"\u4e3b\u6f14\uff1a\u5f20\u7b11\u541b \u5f20\u94ce \u725b\u4e3d\u71d5 \u5218\u5c0f\u950b \u68a6\u6960&qu…

java 场景处理,将黄瓜场景示例作为一个场景处理

我遇到了Cucumber的问题 - 现在我正在进行移动自动化&#xff0c;并且我有使用场景轮廓的功能 - 我在场景中有一些变量&#xff1a;场景大纲&#xff1a;菜单项Given the user is on the hamburger menuAnd the language is Then menu item is Examples:| menu item | language…

mysql 5.5.23 winx64,win10下mysql 5.7.23 winx64安装配置方法图文教程

本文记录了mysql 5.7.23 winx64安装教程&#xff0c;具体内容如下Step1选择手动下载版本解压到自己指定的路径上图中的my.ini及data文件夹在压缩包里是没有的&#xff0c;后面需要自己添加my.ini如下&#xff0c;直接copy~然后在目录下创建一个data文件夹Step2设置环境变量电脑…

php if !=,php If else 用法

PHP的&#xff0c;如果声明是非常类似于其他编程语言使用if语句&#xff0c;但对于那些谁不熟悉它&#xff0c;图片如下&#xff1a;想想你的决定作出之前&#xff0c;你去睡觉。如果你有这样做的第二天&#xff0c;说去上班&#xff0c;上学&#xff0c;或任用&#xff0c;那么…

matlab生成均匀部分散点图,应用halton序列生成均匀散点图

前言一门课的作业要用RBF-DQ方法计算流场。简单来讲就是要在无网格的条件下用高精度格式实现流场的仿真计算。生成散点图时&#xff0c;用蒙特卡洛的方法得到的散点图分布不是很均匀&#xff0c;于是想到一种叫做halton的序列。本篇将运用halton序列生成均匀的散点图。halton序…