@Override public void visit( WithinOperand op ) { final String name = op.getProperty().getValue().toLowerCase(); float lat = op.getLatitude().getFloatValue(); float lon = op.getLongitude().getFloatValue(); float distance = op.getDistance().getFloatValue(); final FilterBuilder fb = FilterBuilders.geoDistanceFilter( IndexingUtils.FIELD_LOCATION_NESTED ).lat( lat ).lon( lon ) .distance( distance, DistanceUnit.METERS ); filterBuilders.push( fieldNameTerm( name, fb ) ); //create our geo-sort based off of this point specified //this geoSort won't has a sort on it final GeoDistanceSortBuilder geoSort = SortBuilders.geoDistanceSort( IndexingUtils.FIELD_LOCATION_NESTED ).unit( DistanceUnit.METERS ) .geoDistance(GeoDistance.SLOPPY_ARC).point(lat, lon); final TermFilterBuilder sortPropertyName = sortPropertyTermFilter(name); geoSort.setNestedFilter( sortPropertyName ); geoSortFields.addField(name, geoSort); //no op for query, push queryBuilders.push( NoOpQueryBuilder.INSTANCE ); }
if (shape.getType() == Geoshape.Type.CIRCLE) { Geoshape.Point center = shape.getPoint(); return FilterBuilders.geoDistanceFilter(key).lat(center.getLatitude()).lon(center.getLongitude()).distance(shape.getRadius(), DistanceUnit.KILOMETERS); } else if (shape.getType() == Geoshape.Type.BOX) { Geoshape.Point southwest = shape.getPoint(0);
@Override public <P extends ParaObject> List<P> findNearby(String appid, String type, String query, int radius, double lat, double lng, Pager... pager) { if (StringUtils.isBlank(type) || StringUtils.isBlank(appid)) { return Collections.emptyList(); } if (StringUtils.isBlank(query)) { query = "*"; } // find nearby Address objects QueryBuilder qb1 = QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(), FilterBuilders.geoDistanceFilter("latlng").point(lat, lng). distance(radius, DistanceUnit.KILOMETERS)); SearchHits hits1 = searchQueryRaw(appid, Utils.type(Address.class), qb1, pager); if (hits1 == null) { return Collections.emptyList(); } // then find their parent objects String[] ridsarr = new String[(int) hits1.getTotalHits()]; for (int i = 0; i < hits1.getTotalHits(); i++) { Object pid = hits1.getAt(i).getSource().get(Config._PARENTID); if (pid != null) { ridsarr[i] = pid.toString(); } } QueryBuilder qb2 = QueryBuilders.filteredQuery(QueryBuilders.queryString(query), FilterBuilders.idsFilter(type).ids(ridsarr)); SearchHits hits2 = searchQueryRaw(appid, type, qb2, pager); return searchQuery(appid, hits2); }
filters .add(FilterBuilders .geoDistanceFilter(propertyName) .point(lat, lon) .distance(distance, DistanceUnit.KILOMETERS));
filters .add(FilterBuilders .geoDistanceFilter(has.key + ElasticSearchSearchIndexBase.GEO_PROPERTY_NAME_SUFFIX) .point(lat, lon) .distance(distance, DistanceUnit.KILOMETERS));
filters .add(FilterBuilders .geoDistanceFilter(has.key + ElasticSearchSearchIndexBase.GEO_PROPERTY_NAME_SUFFIX) .point(lat, lon) .distance(distance, DistanceUnit.KILOMETERS));
filters .add(FilterBuilders .geoDistanceFilter(has.key + ElasticSearchSearchIndexBase.GEO_PROPERTY_NAME_SUFFIX) .point(lat, lon) .distance(distance, DistanceUnit.KILOMETERS));
if (shape.getType() == Geoshape.Type.CIRCLE) { Geoshape.Point center = shape.getPoint(); return FilterBuilders.geoDistanceFilter(key).lat(center.getLatitude()).lon(center.getLongitude()).distance(shape.getRadius(), DistanceUnit.KILOMETERS); } else if (shape.getType() == Geoshape.Type.BOX) { Geoshape.Point southwest = shape.getPoint(0);
if (shape.getType() == Geoshape.Type.CIRCLE) { Geoshape.Point center = shape.getPoint(); return FilterBuilders.geoDistanceFilter(key).lat(center.getLatitude()).lon(center.getLongitude()).distance(shape.getRadius(), DistanceUnit.KILOMETERS); } else if (shape.getType() == Geoshape.Type.BOX) { Geoshape.Point southwest = shape.getPoint(0);