一般情况,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");
这里可以看下
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());//打印