zoukankan      html  css  js  c++  java
  • 记录一下第一个向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,适合刚接触的朋友们。


    学习、成长
  • 相关阅读:
    json不支持中文写入的问题解决
    include(thinkphp常用内置标签)
    php如何设置编码格式
    模板替换
    获取网页内容之后图片不显示
    远程调用数据文件内容
    文件上传
    getError自动验证
    php文档编码设置
    获取网页内容时的乱码问题
  • 原文地址:https://www.cnblogs.com/yarcl/p/11046774.html
Copyright © 2011-2022 走看看