mac/win——测试Python/Java导入CSV文件到ElasticSearch

尝试了Java和Python批量导入数据到ES
每条数据34个字段
1.每一百万条数据【mac 到 mac本地】大概需要5分钟
2.【win 到 win 本地】未测时间

Java中可使用BulkRequestBuilder来add数据;
Python中可使用elasticsearch模块的helpers.bulk来添加数据

Java解决报错【org.elasticsearch.action.ActionRequestValidationException: Validation Failed: 1: no requests added;】
【Java源码中:最终执行的是requests.add(request);,调用的是List中的add】
final List<DocWriteRequest> requests = new ArrayList<>();
super.request.add(request);
BulkRequestBuilder调用ActionRequestBuilder的request()方法获得Request对象,该对象再调用BulkRequest的requests()方法获得List< DocWriteRequest>
if (bulkRequest.request().requests().size() > 0 )判断

utils—配置类

package util;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * <p>package: util,descirption:</p>
 *
 * @author 王海
 * @version V1.0
 * @since <pre>2018/5/30 20:03</pre>
 */
public class EsPropertiesUtils {
   
    // 配置文件封装于map
    private static Map<String, Object> properties = new HashMap<>();

    /**
     * 获取配
     *
     * @param key 配置信息的键
     * @return 配置值
     */
    static Object getProperty(String key) {
        return properties.get(key);
    }

    // static块,项目启动时执行
    static {
        // 加载配置文件
        Properties prop = new Properties();
        InputStream input;
        try {
            // 获取ES的配置信息,然后加载到prop中
            input = EsPropertiesUtils.class.getResourceAsStream("/es.properties");
            prop.load(input);

            // 配置使用跨平台提交任务
            properties.put("cluster.name", prop.getProperty("cluster.name"));
            properties.put("server", prop.getProperty("server"));
            properties.put("port", prop.getProperty("port"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static Map<String,Object> getConf(){
        return properties;
    }
}

utils—open/close

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.InetAddress;
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值