ElasticSearch經緯度相關查詢

1、最近點查詢
官方地址

POST /index/_search
{
  "sort": [
    {
      "_geo_distance": {
        "location": { 
          "lat":  30.77,
          "lon": 114.22
        },
        "order":         "asc",
        "unit":          "km", 
        "distance_type": "plane" 
      }
    }
  ]
}

java代碼

import io.searchbox.client.JestClient;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
import org.elasticsearch.common.unit.DistanceUnit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.GeoDistanceSortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        GeoDistanceSortBuilder sortBuilder = SortBuilders.geoDistanceSort("location", "")
                    .point(30.77, 114.22)
                    .unit(DistanceUnit.METERS)
                    .order(SortOrder.ASC);
        searchSourceBuilder.sort(sortBuilder);
        searchSourceBuilder.from(0);
        searchSourceBuilder.size(1);
        String query = searchSourceBuilder.toString();
        Search search = new Search.Builder(query).addIndex(LccWgsModel.ESINDEX).build();
        SearchResult result = jestClient.execute(search);
        List<LccWgsModel> dataList = result.getSourceAsObjectList(LccWgsModel.class, true);
        System.out.println(dataList.size());
        System.out.println(new Gson().toJson(dataList));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章