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