89 ElasticSearch Java API 基于地理位置搜索

20人阅读 评论(0) 收藏 举报
分类:

89 ElasticSearch Java API 基于地理位置搜索

代码

<dependency>
    <groupId>org.locationtech.spatial4j</groupId>
    <artifactId>spatial4j</artifactId>
    <version>0.6</version>                        
</dependency>

<dependency>
    <groupId>com.vividsolutions</groupId>
    <artifactId>jts</artifactId>
    <version>1.13</version>                         
    <exclusions>
        <exclusion>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
        </exclusion>
    </exclusions>
</dependency>

比如我们有很多的4s店,然后呢给了用户一个app,在某个地方的时候,可以根据当前的地理位置搜索一下,自己附近的4s店

POST /car_shop/_mapping/shops
{
  "properties": {
      "pin": {
          "properties": {
              "location": {
                  "type": "geo_point"
              }
          }
      }
  }
}
PUT /car_shop/shops/1
{
    "name": "上海至全宝马4S店",
    "pin" : {
        "location" : {
            "lat" : 40.12,
            "lon" : -71.34
        }
    }
}

第一个需求:搜索两个坐标点组成的一个区域

QueryBuilder qb = geoBoundingBoxQuery("pin.location").setCorners(40.73, -74.1, 40.01, -71.12); 

第二个需求:指定一个区域,由三个坐标点,组成,比如上海大厦,东方明珠塔,上海火车站

List<GeoPoint> points = new ArrayList<>();             
points.add(new GeoPoint(40.73, -74.1));
points.add(new GeoPoint(40.01, -71.12));
points.add(new GeoPoint(50.56, -90.58));
QueryBuilder qb = geoPolygonQuery("pin.location", points); 

第三个需求:搜索距离当前位置在200公里内的4s店

QueryBuilder qb = geoDistanceQuery("pin.location").point(40, -70).distance(200, DistanceUnit.KILOMETERS);   

SearchResponse response = client.prepareSearch("car_shop")
        .setTypes("shops")
        .setQuery(qb)                
        .get();

查看评论

elasticsearch geo_point 地理位置过滤 按经度排序

elasticsearch 支持强大的经纬度坐标过滤。1、首先要建立坐标类型的字段'type' ='geo_point'     es存储的值是这样的:&quot;poi&quot;: [      ...
  • pengsidong
  • pengsidong
  • 2018-03-12 13:31:16
  • 7269

Elasticsearch地理位置总结

翻译版本:https://es.xiaoleilu.com/310_Geopoints/00_Intro.html 官方原文:https://www.elastic.co/guide/en/elas...
  • u012332735
  • u012332735
  • 2017-02-10 16:19:37
  • 6773

elasticsearch 全文检索,geo地理位置附近的人查询

elasticsearch 5.0.1  单机 cpu 8g内存     100万数据量,搜索耗时30ms 左右              ** * 实现附近的人功能,最大限额1000人,1米...
  • luosai19910103
  • luosai19910103
  • 2016-12-18 21:17:11
  • 2923

ElasticSearch位置搜索

在ElasticSearch中,地理位置通过geo_point这个数据类型来支持。地理位置的数据需要提供经纬度信息,当经纬度不合法时,ES会拒绝新增文档。这种类型的数据支持距离计算,范围查询等。在底层...
  • bingduanlbd
  • bingduanlbd
  • 2016-08-19 19:02:01
  • 2307

基于LBS的地理位置附近的搜索以及由近及远的排序

from:http://www.cnblogs.com/jifeng/p/4356006.html Nosql学习之Redis资料(一) http://redis.io/download   ...
  • Real_Myth
  • Real_Myth
  • 2016-04-12 21:15:19
  • 1915

分布式搜索 elasticsearch 方案研究 - Java API

  • 2012年11月21日 17:05
  • 60KB
  • 下载

elasticsearch java API ------搜索

在创建索引时,我们根据IndexResponse,得到了index、type和id,Get一条记录的方法很简单: GetResponse getResponse = client.prepa...
  • liyantianmin
  • liyantianmin
  • 2015-04-19 22:57:51
  • 3949

elasticsearch5.5.2用javaAPI实现搜索结果高亮显示和搜索建议

前言: 像百度、360搜索等等,我们输入完搜索条件时,他会自动出来一个提示框,将我们输入的关键词进行自动补全,当我们点击搜索后,返回的搜索结果中会将我们搜索的内容进行高亮的显示(不同颜色标记出来),强...
  • plei_yue
  • plei_yue
  • 2017-11-05 16:06:10
  • 1052

ElasticSearch入门-搜索(java api)

ElasticSearch入门-搜索(java api)package com.qlyd.searchhelper;import java.util.Map;import net.sf.json.JS...
  • lu_wei_wei
  • lu_wei_wei
  • 2016-03-23 09:56:13
  • 3055

Elasticsearch java api 基本搜索部分详解

一、所使用版本的介绍 使用的是elasticsearch2.1.0版本,在此只是简单介绍搜索部分的api使用 二、简单的搜索 使用api的时候,基本上可以将DSL搜索的所有情况均写出来,在此给出一个最...
  • molong1208
  • molong1208
  • 2016-01-13 17:31:52
  • 22539
    我的微信
      我的微信号号,添加后更多福利
    个人资料
    持之以恒
    等级:
    访问量: 6万+
    积分: 4623
    排名: 7347
    文章存档
    最新评论