记录一下第一个向ElasticSearch中添加数据的方法

来源:互联网 发布:淘宝主图视频自动播放 编辑:程序博客网 时间:2024/06/01 15:45

话少,直上Code:


                            org.elasticsearch            elasticsearch            2.0.0            

该代码片段为引用的ElasticSearch的Maven坐标,该版本为2.0.0版本的ES。目前最新的已经出了5.0.X了,大家可以尝试最新的。


接下来就是贴出实际操作ElasticSearch的代码片段


import org.elasticsearch.action.bulk.BulkRequestBuilder;import org.elasticsearch.action.bulk.BulkResponse;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.InetSocketTransportAddress;import java.net.InetAddress;import java.util.HashMap;import java.util.Map;/** * Created by Administrator on 2017/10/11. */public class TestInsertElastic {    public static final String CLUSTER_NAME ="elasticsearch1"; // 实例名称    private static final String IP = "192.168.1.11";           // 要连接主机ip去执行这个操作    private static final int PORT = 9300;                      // ElasticSearch集群Cluster默认通过9300端口通信    // main方法的调用    public  static void main(String args[]) throws Exception{        // 进行前期ElasticSearch的相关配置实现        Settings settings = Settings.settingsBuilder()                .put("cluster.name", CLUSTER_NAME)      // 集群节点的名称                .put("client.transport.sniff", true)    // 启动嗅探功能 客户端去嗅探整个集群的状态,把集群中其它机器的ip地址加到客                .put("client.transport.ping_timeout", "120s") // 设置集群节点的超时时间为120s                .build();        // 通过如上的settings对象去创建TransportClient对象(ElasticSearch中的客户端对象)        TransportClient client = TransportClient.builder().settings(settings).build();        // 通过ip、port和client对象建立连接        client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP), PORT));        // 要插入的数据条数        Long count = 20L;        // ElasticSearch中的index的索引        String index = "test_bigdata";        // ElasticSearch中的type的类型        String type = "student1";        // 创建批量插入数据的Bulk对象        BulkRequestBuilder bulkRequest = client.prepareBulk();        // 循环创建对象并且插入数据到ElasticSearch中        for (int i = 0; i < count; i++) {            Map ret = new HashMap();            // 模拟创建的列和数据,Map中的key为关系型数据库中的列名称,Value为关系型数据库中的值            ret.put("recordtime", 00);            ret.put("area", 01);            ret.put("usertype", 02);            ret.put("count", 03);            ret.put("test_data", 05);            // 将创建的Map对象添加到Bulk对象中暂存起来            bulkRequest.add(client.prepareIndex(index, type).setSource(ret));            // 每10条提交一次            if (i % 10 == 0) {                // 一次执行插入数据的操作                BulkResponse response = bulkRequest.execute().actionGet();                System.out.println(response.getTook());                System.out.println("test for elasticSearchs ============= ");            }        }    }}

如上就是简单通过ElasticSearch批量插入数据的小Demo,适合刚接触的朋友们。