ESのgeo_distanceクエリで、ある指定した中心からの距離で検索かけたい
GET /my_locations/_search { "query": { "bool" : { "must" : { "match_all" : {} }, "filter" : { "geo_distance" : { "distance" : "200km", "location" : { "lat" : 40, "lon" : -70 } } } } } }
これをJavaのElasticsearch RestHighLevelClientライブラリを使って行いたい
実装はこのような感じ
SearchSourceBuilder ssb = new SearchSourceBuilder(); BoolQueryBuilder boolQuery = boolQuery(); GeoDistanceQueryBuilder geoDistanceFilter = geoDistanceQuery("location") .point(40, -70) .distance("200km"); boolQuery.filter(geoDistanceFilter); ssb.query(boolQuery);
他参考
https://uga-box.hatenablog.com/entry/2020/02/28/000000
https://www.codeflow.site/ja/article/elasticsearch-geo-spatial