操作ES的对象 :TransportClient
org.elasticsearch.client
transport
${elasticsearch.client.version}
我的版本是5.4.0
创建TransportClient对象
我是使用spring的bean注入的
@SuppressWarnings("resource")
@Bean(name="transportClient")
@Lazy
public TransportClient getTransportClient(){
TransportClient client =null;
try{
Settings settings= Settings.builder().put("cluster.name", "elasticsearch").build();
client=new PreBuiltTransportClient(settings).addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName("192.168.0.11"),9300));
log.info("创建es客户端对象成功");
}catch(Exception e){
log.error("创建es客户端对象失败");
log.error("失败原因:"+e.getMessage());
System.exit(-1);
}
return client;
}
创建对象那个成功后,就可以用来操作es库了,他的作用跟spring-jdbctemplate,spring-jdbctemplate一样,提供了对数据库增删改查的功能,
参考文档:
我用的就是es自己提供的对象 TransportClient
添加数据
es的添加数据提供了多种方法,跟hql语言有点相似,都是面向对象的。
es支持批量操作的方法,为了提供效率都是用批量的对象
BulkRequestBuilder builder=transportClient.prepareBulk();
BulkRequestBuilder 对象有一个地方需要注意,因为是批量操作,es忽略了数据的不正确性,就算你的数据不对,builder也不会报错,所以在调试阶段需要先确保数据的准确性再用该对象进行操作。
插入数据,其实只需要把你的对象转成json,然后批量插入即可
@Override
public void batchAddMyZu(List list) {
BulkRequestBuilder builder=transportClient.prepareBulk();
for(Family family:list){
String objstr= JSON.toJSONString(family);
builder.add(client.prepareIndex("family","myfamily"