1 package com.znv.elasticsearch;
2
3 import org.elasticsearch.action.bulk.BulkRequestBuilder;
4 import org.elasticsearch.action.bulk.BulkResponse;
5 import org.elasticsearch.client.transport.TransportClient;
6 import org.elasticsearch.common.settings.Settings;
7 import org.elasticsearch.common.transport.InetSocketTransportAddress;
8 import org.elasticsearch.transport.client.PreBuiltTransportClient;
9
10 import java.net.InetAddress;
11 import java.net.UnknownHostException;
12 import java.text.SimpleDateFormat;
13 import java.util.Date;
14 import java.util.Random;
15
16 import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
17
18
19 public class esTestData {
20 private static TransportClient client = null;
21 private static Random rnd = new Random();
22 private static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
23 private static final String startDate = "2017-01-01 00:00:00";
24
25
26 private static long randomNum(long begin, long end)
27 {
28 long rtn = begin + (long)(Math.random() * (end - begin));
29 if (rtn == begin || rtn == end)
30 {
31 return randomNum(begin,end);
32 }
33 return rtn;
34 }
35 public static Date randomDate(String beginDate, String endDate)
36 {
37 try
38 {
39 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
40 Date start = format.parse(beginDate);
41 Date end = format.parse(endDate);
42 if (start.getTime() >= end.getTime())
43 {
44 return null;
45 }
46 long date = randomNum(start.getTime(),end.getTime());
47 return new Date(date);
48 }
49 catch (Exception e)
50 {
51 e.printStackTrace();
52 }
53 return null;
54 }
55
56 public static void initClient() {
57 try {
58 // on startup
59 Settings settings = Settings.builder()
60 .put("cluster.name", "lv08-elasticsearch").build();
61 client = new PreBuiltTransportClient(settings)
62 .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("10.45.157.130"), 9300));
63 } catch (UnknownHostException e) {
64 e.printStackTrace();
65 }
66 }
67
68 public static void closeClient() {
69 client.close();
70 }
71
72 public static void bulkPutEs() {
73 try {
74
75 long t1 = System.currentTimeMillis();
76 int n = 0;
77 //写入10*1000条数据
78 while (n++ < 10) {
79 BulkRequestBuilder bulkRequest = client.prepareBulk();
80 for (int i = 0; i < 1000; i++) {
81 int id = rnd.nextInt(1000);
82 String name = "名字" + id;
83 int gender = rnd.nextInt(2);
84 int age = rnd.nextInt(100);
85 Date enter_time = randomDate(startDate,df.format(new Date()));
86 bulkRequest.add(client.prepareIndex("test-total", "type1", String.valueOf(id)+String.valueOf(enter_time.getTime()))
87 .setSource(jsonBuilder()
88 .startObject()
89 .field("id", id)
90 .field("name",name)
91 .field("gender",gender)
92 .field("age", age)
93 .field("enter_time", enter_time)
94 .endObject()
95 )
96 );
97 }
98 BulkResponse bulkResponse = bulkRequest.get();
99 if (bulkResponse.hasFailures()) {
100 // process failures by iterating through each bulk response item
101 System.out.println(bulkRequest.toString());
102 }
103 }
104
105 long ts = System.currentTimeMillis() - t1;
106 System.out.println("cost "+ts +" ms.");
107
108 } catch (Exception e) {
109 e.printStackTrace();
110 }
111 }
112
113 public static void main(String []args) {
114 initClient();
115 bulkPutEs();
116 closeClient();
117 }
118
119 }