ElasticSearch: java transportClient

连接:

private staticSettingssettings= Settings

.builder()

.put("cluster.name",CLUSTER_NAME)

.put("client.transport.sniff", true)

.build();

private staticTransportClientclient;

static{

try{

client= TransportClient.builder().settings(settings).build()

.addTransportAddress(newInetSocketTransportAddress(InetAddress.getByName(IP),PORT));

}catch(UnknownHostException e) {

e.printStackTrace();

}

}

注意http请求跟spark连接都是rest接口,所以端口是9200,而transportClient端口是9300.

查询:

org.elasticsearch.index.query.BoolQueryBuilder bq1 = QueryBuilders.boolQuery()

.must(QueryBuilders.boolQuery()

.should(QueryBuilders.matchPhraseQuery("province","0002"))

.should(QueryBuilders.matchPhraseQuery("province","0001"))

);

bq1.must(QueryBuilders.boolQuery()

.should(QueryBuilders.matchPhraseQuery("sex","02401")));

bq1.must(QueryBuilders.boolQuery()

.should(QueryBuilders.matchPhraseQuery("age","02505"))

);

org.elasticsearch.index.query.BoolQueryBuilder qq = QueryBuilders.boolQuery().must(bq1);

上面是查询条件精确匹配过滤,下面是按media分组,统计distinct count deviceId 列。

.setQuery(qq)

.addAggregation(

AggregationBuilders

.terms("agg1").size(200).field("media")

.subAggregation(AggregationBuilders.cardinality("agg2") -----去重

.precisionThreshold(40000)  -----精确匹配最大值,表示完全匹配

.field("deviceId"))

)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。