以下批量索引代码:
Settings settings=ImmutableSettings.settingsBuilder() .put("client.transport.sniff",true).put("cluster.name","myelasticsearch").build(); //设置客户端连接transport Client client=new TransportClient(settings).addTransportAddress( new InetSocketTransportAddress("192.168.1.100",9300)); //建立批量提交类 BulkRequestBuilder bulkRequest=client.prepareBulk(); while(rs.next()){ //建立批量json对象 bulkRequest.add(client.prepareIndex("ryxx","tweet",rs.getString("id")).setSource(jsonBuilder().startObject() .field("name",rs.getString("name")) .field("age",rs.getString("age")) .field("address",rs.getString("address")) .field("phone",rs.getString("phone")) .endObject() )); } //批量提交到服务器 BulkResponse bulkResponse=bulkRequest.execute().actionGet(); //提交过程是否产生错误 if(bulkResponse.hasFailures()){ System.out.println(bulkResponse.buildFailureMessage()); }
提交数据的速度跟查询数据库的速度、机器配置等有关,如果是集群的话还跟网络带宽相关。另外我设置:index.number_of_shards:5 即5个分片 index.number_of_replics:1 即每个分片有一份备份