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

话少,直上Code:

<!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch-hadoop-cascading -->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch-hadoop-cascading</artifactId>
    <version>2.0.0</version>
</dependency>

该代码片段为引用的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,适合刚接触的朋友们。


posted @ 2017-10-12 16:03  yarcl  阅读(1380)  评论(0编辑  收藏  举报