ES版本基于2.4.1编写,其他版本会照成客户端连接异常。
API简介
查询所有,单字段 词条查询,时间段查询,组合查询or,组合查询and,模糊查询,创建索引,查看集群信息,单个更新,其他功能持续更新,都是常用的基础。
EsApi
package com.elastic.api;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.metrics.avg.AvgBuilder;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 17-9-6
* Time: 上午9:52
* To change this template use File | Settings | File Templates.
*/
public class EsApi {
public TransportClient client;
public EsApi( TransportClient client){
this.client = client;
}
/**
* 创建索引
*/
public void createIndex(BulkRequestBuilder brb1){
for(int i = 0 ;i<10;i++){
String json = "{\"gs\":"+(10-i)+",\"study\": "+i+"}";
IndexRequest request = client.prepareIndex("test", "test").setSource(json).request();
brb1.add(request);
}
BulkResponse bulkResponse = brb1.execute().actionGet();
}
/**
* 查看集群信息
*/
public void getClusterInfo() {
List<DiscoveryNode> nodes = client.connectedNodes();
for (DiscoveryNode node : nodes) {
System.out.println(node.toString());
}
}
/**
* 单个更新
*/
public void singleUpdate(String id,String json) {
client.prepareUpdate().setIndex("test").setType("test").setId(id).setDoc(json).execute().actionGet();
}
public void queryBuilders(){
//查询所有
// QueryBuilder qb = QueryBuilders.matchAllQuery();
//单字段 词条查询
// QueryBuilder qb = QueryBuilders.termsQuery("study_gs",new int[]{1,2,3});
//时间段查询
// QueryBuilders.rangeQuery("time").from(1490926962223.0).to(1490926965000.0) ;
//组合查询or
// QueryBuilder qb = (QueryBuilders.boolQuery()
// .should(QueryBuilders.termsQuery("study",new int[]{1})))
// .should(QueryBuilders.termsQuery("gs",new int[]{4}));
//组合查询and
// QueryBuilder qb = QueryBuilders.boolQuery()
// .must(QueryBuilders.termsQuery("study",new int[]{1})) ;
//模糊查询
QueryBuilder qb = QueryBuilders.wildcardQuery("study","1");
sysOut(qb,null);
}
/**
* 删除一条数据
*/
public void deleteDoc(String id) {
DeleteResponse deleteResponse = this.client
.prepareDelete()
.setIndex("test")
.setType("test")
.setId(id)
.get();
System.out.println(deleteResponse.isFound()); // true表示成功
}
/**
* 统一输出方法
*/
public void sysOut(QueryBuilder qb,AvgBuilder ab ){
SearchResponse actionGet = null;
if(null == ab){
actionGet = client.prepareSearch("test")
.setTypes("test")
.setQuery(qb)
.setSize(20)
.execute()
.actionGet();
}else{
actionGet = client.prepareSearch("test")
.setTypes("test")
.setQuery(qb)
.addAggregation(ab)
.setSize(20)
.execute()
.actionGet();
}
SearchHits hits = actionGet.getHits();
System.out.println("Hints:"+hits.getTotalHits());
for (SearchHit hit : hits.getHits()){ //getHits 的使用
System.out.println(hit.getSourceAsString());//这样可以获得属性的值
// System.out.println(hit.getSource().get("study_gs"));
}
}
}
EsClient
package com.elastic.api;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.transport.TransportAddress;
public class EsClient {
private static TransportClient client;
static{
String hostString1 = "10.2.4.15";
String hostString2 = "10.2.4.42";
String hostString3 = "10.2.4.43";
int port = 9300;
Settings settings = Settings.settingsBuilder()
.put("cluster.name", "SOC-15")
.put("transport.tcp.compress", true)
.build();
TransportAddress[] addressArr = new TransportAddress[3];
try {
addressArr[0] = new InetSocketTransportAddress(InetAddress.getByName(hostString1), port);
addressArr[1] = new InetSocketTransportAddress(InetAddress.getByName(hostString2), port);
addressArr[2] = new InetSocketTransportAddress(InetAddress.getByName(hostString3), port);
} catch (UnknownHostException e) {
e.printStackTrace();
}
client = TransportClient.builder().settings(settings).build().addTransportAddresses(addressArr);
}
//测试
public static void main(String[] args) {
EsApi ea = new EsApi(client);
//创建索引
// BulkRequestBuilder brb = client.prepareBulk();
// ea.createIndex( brb);
//获取节点信息
// ea.getClusterInfo();
// ea.singleUpdate("485313b09de0491ea2bacb524965613a","{\"yjd\": 10,\"study_yjd\": 10}");
//删除
ea.deleteDoc("AV5V7ZmXKBTIVYuVW0Zt");
//查询
// ea.queryBuilders();
close();
}
public static void close()
{
try {
client.close();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
client.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}