1.测试数据:{"address":{"location":[{"lat":0.0,"lon":0.0},{"lat":0.0,"lon":0.0}]}}
{"address":{"location":[{"lat":1.0,"lon":1.0},{"lat":1.0,"lon":1.0}]}}
{"address":{"location":[{"lat":2.0,"lon":2.0},{"lat":2.0,"lon":2.0}]}}
{"address":{"location":[{"lat":3.0,"lon":3.0},{"lat":3.0,"lon":3.0}]}}
{"address":{"location":[{"lat":4.0,"lon":4.0},{"lat":4.0,"lon":4.0}]}}
2.测试方法
Client client = new TransportClient().addTransportAddresses(new InetSocketTransportAddress("127.0.0.1", 9300));
AggregationBuilder aggregation =
AggregationBuilders
.geoDistance("agg")
.field("address.location")
.point(new GeoPoint(0,5))
.unit(DistanceUnit.KILOMETERS)
.addUnboundedTo(30.0)
.addRange(30.0, 40.0)
.addRange(40.0, 500.0);
SearchResponse sr = client.prepareSearch("mytest").setTypes("logs")
.addAggregation(aggregation)
.setSize(20)
.execute()
.actionGet();
System.out.println(sr.toString());
Range agg = sr.getAggregations().get("agg");
for (Range.Bucket entry : agg.getBuckets()) {
String key = entry.getKey(); // key as String
Number from = (Number) entry.getFrom(); // bucket from value
Number to = (Number) entry.getTo(); // bucket to value
long docCount = entry.getDocCount(); // Doc count
System.out.println("key:"+key+";from:"+from+";to:"+to+";docCount:"+docCount);
}
SearchHits hits = sr.getHits();
if (null == hits || hits.totalHits() == 0) {
System.out.println("对不起,您没有查询到结果!!");
}
else {
for (SearchHit hit : hits) {
String json = hit.getSourceAsString();
System.out.println(json);
}
}
3.测试结果docCount都等于0,我觉得好像在哪用的不对,请大家帮忙看下
{"address":{"location":[{"lat":1.0,"lon":1.0},{"lat":1.0,"lon":1.0}]}}
{"address":{"location":[{"lat":2.0,"lon":2.0},{"lat":2.0,"lon":2.0}]}}
{"address":{"location":[{"lat":3.0,"lon":3.0},{"lat":3.0,"lon":3.0}]}}
{"address":{"location":[{"lat":4.0,"lon":4.0},{"lat":4.0,"lon":4.0}]}}
2.测试方法
Client client = new TransportClient().addTransportAddresses(new InetSocketTransportAddress("127.0.0.1", 9300));
AggregationBuilder aggregation =
AggregationBuilders
.geoDistance("agg")
.field("address.location")
.point(new GeoPoint(0,5))
.unit(DistanceUnit.KILOMETERS)
.addUnboundedTo(30.0)
.addRange(30.0, 40.0)
.addRange(40.0, 500.0);
SearchResponse sr = client.prepareSearch("mytest").setTypes("logs")
.addAggregation(aggregation)
.setSize(20)
.execute()
.actionGet();
System.out.println(sr.toString());
Range agg = sr.getAggregations().get("agg");
for (Range.Bucket entry : agg.getBuckets()) {
String key = entry.getKey(); // key as String
Number from = (Number) entry.getFrom(); // bucket from value
Number to = (Number) entry.getTo(); // bucket to value
long docCount = entry.getDocCount(); // Doc count
System.out.println("key:"+key+";from:"+from+";to:"+to+";docCount:"+docCount);
}
SearchHits hits = sr.getHits();
if (null == hits || hits.totalHits() == 0) {
System.out.println("对不起,您没有查询到结果!!");
}
else {
for (SearchHit hit : hits) {
String json = hit.getSourceAsString();
System.out.println(json);
}
}
3.测试结果docCount都等于0,我觉得好像在哪用的不对,请大家帮忙看下
0 个回复