一般情况,java要想操作一个东东,肯定是要建立个实例,然后调用他的API进行,操作。

对于elasticsearch(ES)来说,同样的,下面来记录下过程:

ES是通过一个叫做客户端Client的东西,来操作APi的

1、那么首先就是要建立客户端

//设置es节点的属性
 Settings settings = ImmutableSettings.settingsBuilder()
                    .put("client.transport.sniff", true)
                    .put("cluster.name", esClusterName)
.build();
//创建es客户端client = new TransportClient(settings)            .addTransportAddress(new InetSocketTransportAddress(esClusterIp, 9300))//esClusterIp是要连接的es的ip

这样就建立好一个客户端,其中有一些节点属性

可通过这样设置

  1. settingMap.put("node.client", "false");  
  2. settingMap.put("node.data", "true");  
  3. settingMap.put("node.local", "true");  
  4. settingMap.put("cluster.name", "clasterName");  
  5. settingMap.put("node.name", "geloin");  

这里可以看下

ES-node属性介绍,写的很详细。

2、创建好了Client接下来就可以操作api了

先说下添加,这里的添加有点另类,es的添加操作较index,这个名字。。。害得我搜了半天,以为index这都不是。

他添加的是一个josn串,那么可按照一下步骤进行

XContentBuilder contentBuilder = XContentFactory.jsonBuilder()
        .startObject();
contentBuilder.field("message","add message");//要发送的字段
contentBuilder.field("num", "1");
String json = contentBuilder.endObject().string();//生成好json串
//发送数据,创建索引,即添加数据
client.prepareIndex(esIndex, esType).setSource(json)//添加到esIndex(相当于库)中的extype(相当于表)中
        .execute().actionGet();



3、同样拿到了Client再来一个查询


GetResponse responseGet = client.prepareGet(esIndex, esType, esIdea).execute().actionGet();//查找索引inde,type中指定id的数据
System.out.println(responseGet.getSourceAsString());//打印