话少,直上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,适合刚接触的朋友们。