一般情况,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
可通过这样设置
- settingMap.put("node.client", "false");
- settingMap.put("node.data", "true");
- settingMap.put("node.local", "true");
- settingMap.put("cluster.name", "clasterName");
- settingMap.put("node.name", "geloin");
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());//打印