java transport_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"))

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值