首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

elasticsearch GEO搜索按距离从近到远排序

Elasticsearch是一个开源的分布式搜索和分析引擎,它可以用于实现全文搜索、结构化搜索、日志分析、数据可视化等功能。GEO搜索是Elasticsearch中的一种特殊搜索方式,它允许根据地理位置信息进行搜索和排序。

GEO搜索按距离从近到远排序是指根据给定的地理位置信息,将搜索结果按照与指定位置的距离从近到远进行排序。这种排序方式常用于地理位置相关的应用场景,比如附近的人、附近的商家、附近的景点等。

在Elasticsearch中,GEO搜索按距离从近到远排序可以通过以下步骤实现:

  1. 创建索引:首先,需要创建一个包含地理位置信息的索引。在索引的映射中,需要使用地理位置类型(geo_point)来存储地理位置信息。
  2. 索引文档:将包含地理位置信息的文档索引到Elasticsearch中。每个文档都应该包含一个地理位置字段,用于存储地理位置信息。
  3. 执行GEO搜索:使用Elasticsearch提供的GEO搜索功能,指定搜索的地理位置和排序方式。可以通过指定一个中心点坐标和一个搜索半径来限定搜索范围。
  4. 排序结果:根据搜索结果与中心点的距离,将搜索结果按照距离从近到远进行排序。可以使用Elasticsearch的排序功能来实现。

推荐的腾讯云相关产品是腾讯云的Elasticsearch服务。腾讯云Elasticsearch是基于开源Elasticsearch的托管式服务,提供了稳定可靠的分布式搜索和分析引擎。您可以通过腾讯云Elasticsearch服务快速搭建和管理自己的搜索应用,包括GEO搜索按距离从近到远排序的功能。

腾讯云Elasticsearch产品介绍链接地址:https://cloud.tencent.com/product/es

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

利用Redis的Geo功能实现查找附近的位置

3.2版本开始它开始提供了GEO能力,用来实现诸如附近位置、计算距离等这类依赖于地理位置信息的功能。...可以添加一多个位置。然后我们就可以借助于其他命令来进行地理位置的计算了。 有效的经度-180 度 180 度。有效的纬度-85.05112878 度 85.05112878 度。...ASC|DESC 排序方式,非必选。默认情况下返回未排序,但是大多数我们需要进行排序。参照中心位置,使用ASC ,远到使用DESC。...例如,我们在 cities:locs 中查找以(115.03,38.44)为中心,方圆200km的城市,结果包含城市名称、对应的坐标和距离中心点的距离(km),并按照排列。...、由排序的前 5 条数据: RedisGeoCommands.GeoRadiusCommandArgs args = RedisGeoCommands .GeoRadiusCommandArgs

2.4K50
  • 利用Redis的Geo功能实现查找附近的位

    3.2版本开始它开始提供了GEO能力,用来实现诸如附近位置、计算距离等这类依赖于地理位置信息的功能。...可以添加一多个位置。然后我们就可以借助于其他命令来进行地理位置的计算了。 有效的经度-180 度 180 度。有效的纬度-85.05112878 度 85.05112878 度。...ASC|DESC 排序方式,非必选。默认情况下返回未排序,但是大多数我们需要进行排序。参照中心位置,使用ASC ,远到使用DESC。...例如,我们在 cities:locs 中查找以(115.03,38.44)为中心,方圆200km的城市,结果包含城市名称、对应的坐标和距离中心点的距离(km),并按照排列。...、由排序的前 5 条数据: RedisGeoCommands.GeoRadiusCommandArgs args = RedisGeoCommands .GeoRadiusCommandArgs

    1.5K30

    ES7学习笔记(十三)GEO位置搜索

    ES的基本内容介绍的已经差不多了,最后我们再来看看GEO位置搜索,现在大部分APP都有基于位置搜索的功能,比如:我们点外卖,可以按照离我们的距离进行排序,这样可以节省我们的配送费和送餐的时间;还有找工作时...,也可以按照离自己家的距离进行排序,谁都想找个离家的工作,对吧。...这些功能都是基于GEO搜索实现的,目前支持GEO搜索功能的中间件有很多,像MySQL、Redis、ES等。我们看看在ES当中怎么实现GEO位置搜索。...距离排序 有的小伙伴可能会有这样的疑问,我不想按照距离去查询,只想把查询结果按照离“我”的距离排序,该怎么做呢?...距离排序,同样,先指定geo字段location,和当前的坐标工体,再设置排序是升序。

    75430

    ES7学习笔记(十三)GEO位置搜索

    ES的基本内容介绍的已经差不多了,最后我们再来看看GEO位置搜索,现在大部分APP都有基于位置搜索的功能,比如:我们点外卖,可以按照离我们的距离进行排序,这样可以节省我们的配送费和送餐的时间;还有找工作时...,也可以按照离自己家的距离进行排序,谁都想找个离家的工作,对吧。...这些功能都是基于GEO搜索实现的,目前支持GEO搜索功能的中间件有很多,像MySQL、Redis、ES等。我们看看在ES当中怎么实现GEO位置搜索。...距离排序 有的小伙伴可能会有这样的疑问,我不想按照距离去查询,只想把查询结果按照离“我”的距离排序,该怎么做呢?...距离排序,同样,先指定geo字段location,和当前的坐标工体,再设置排序是升序。

    97330

    elasticsearch-搜索结果处理排序、分页、高亮等原理+实践

    elasticsearch[三]-搜索结果处理排序、分页、高亮等原理+实践 1. 搜索结果处理 搜索的结果可以按照用户指定的方式去处理或展示。 1.1....排序 elasticsearch 默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword 类型、数值类型、地理坐标类型、日期类型等。..."unit" : "km" // 排序距离单位 } } ] } 这个查询的含义是: 指定一个坐标,作为目标点 计算每一个文档中,指定字段(必须是 geo_point 类型...)的坐标 目标点的距离是多少 根据距离排序 示例: 需求描述:实现对酒店数据按照到你的位置坐标的距离升序排序 提示:获取你的位置的经纬度的方式:https://lbs.amap.com/demo...汇总内存中? 当查询分页深度较大时,汇总数据过多,对内存和 CPU 会产生非常大的压力,因此 elasticsearch 会禁止 from+ size 超过 10000 的请求。

    1.1K10

    Redis 实战篇:通过 Geo 类型实现附近的人邂逅女神

    附近的人核心思想如下: 以 “我” 为中心,搜索附近的 Ta; 以 “我” 当前的地理位置为准,计算出别人和 “我” 之间的距离 “我” 与别人距离的远近排序,筛选出离我最近的用户。...将经纬度存储 MySQL: ? “可是总不能遍历所有的「女神」经纬度与自己的经纬度数据计算在根据距离排序,这个计算量也太大了。...” 多出来的这部分区域内的用户,圆点的距离一定比圆的半径要大,那么我们就计算用户中心点与正方形内所有用户的距离,筛选出所有距离小于等于半径的用户,圆形区域内的所用户即符合要求的附近的人。...km 的「女神」并返回给 LBS 应用: GEORADIUS girl:locations 15.087269 37.502669 km ASC COUNT 10 ASC可以实现让「女神」信息按照这个距离自己的经纬度由排序...所以,这里建议 Geo 的数据使用单独的 Redis 集群实例部署。 如果数据量过亿甚至更大,就需要对 Geo 数据进行拆分,国家拆分、省拆分,市拆分,在人口特大城市甚至可以区拆分。

    1.3K20

    Redis 实战篇:通过 Geo 类型实现附近的人邂逅女神

    附近的人核心思想如下: 以 “我” 为中心,搜索附近的 Ta; 以 “我” 当前的地理位置为准,计算出别人和 “我” 之间的距离 “我” 与别人距离的远近排序,筛选出离我最近的用户。...” 在圆形外套上一个正方形,根据用户经、纬度的最大最小值(经、纬度 + 距离),作为筛选条件过滤数据,就很容易将正方形内的「女神」信息搜索出来。 ? “多出来的一些区域咋办?...” 多出来的这部分区域内的用户,圆点的距离一定比圆的半径要大,那么我们就计算用户中心点与正方形内所有用户的距离,筛选出所有距离小于等于半径的用户,圆形区域内的所用户即符合要求的附近的人。...km 的「女神」并返回给 LBS 应用: GEORADIUS girl:locations 15.087269 37.502669 km ASC COUNT 10 ASC可以实现让「女神」信息按照这个距离自己的经纬度由排序...所以,这里建议 Geo 的数据使用单独的 Redis 集群实例部署。 如果数据量过亿甚至更大,就需要对 Geo 数据进行拆分,国家拆分、省拆分,市拆分,在人口特大城市甚至可以区拆分。

    1.1K50

    Redis 实战篇:Geo 算法教你邂逅附近女神

    附近的人核心思想如下: 以 “我” 为中心,搜索附近的 Ta; 以 “我” 当前的地理位置为准,计算出别人和 “我” 之间的距离 “我” 与别人距离的远近排序,筛选出离我最近的用户。...” 在圆形外套上一个正方形,根据用户经、纬度的最大最小值(经、纬度 + 距离),作为筛选条件过滤数据,就很容易将正方形内的「女神」信息搜索出来。 “多出来的一些区域咋办?...” 多出来的这部分区域内的用户,圆点的距离一定比圆的半径要大,那么我们就计算用户中心点与正方形内所有用户的距离,筛选出所有距离小于等于半径的用户,圆形区域内的所用户即符合要求的附近的人。...km 的「女神」并返回给 LBS 应用: GEORADIUS girl:locations 15.087269 37.502669 km ASC COUNT 10 ASC可以实现让「女神」信息按照这个距离自己的经纬度由排序...所以,这里建议 Geo 的数据使用单独的 Redis 集群实例部署。 如果数据量过亿甚至更大,就需要对 Geo 数据进行拆分,国家拆分、省拆分,市拆分,在人口特大城市甚至可以区拆分。

    1.6K10

    如何实现距离排序、范围查找

    简介 现在几乎所有的O2O应用中都会存在“范围搜素、离我最近、显示距离”等等基于位置的交互,那这样的功能是怎么实现的呢?本文提供的实现方式,适用于所有数据库。...排序 距离排序。如果不需要,可以跳过。 4. 分页 如果需要2、3步,才需要对分页特殊处理。如果不需要,可以在第1步直接SQL分页。 第1步数据库完成,后3步应用程序完成。...我们需要一个geo_code长度和距离的对照表: geohash length width height 1 5,009.4km 4,992.6km 2 1,252.3km 624.1km 3 156.5km...step2 过滤 上面两种搜索方式,都不是精确搜索,只是尽量缩小搜索范围,提升响应速度。所以需要在应用程序中做过滤,把距离大于1公里的商户过滤掉。计算距离同样使用spatial4j。...step3 排序 同样,排序也需要在应用程序中处理。排序基于上面的过滤结果做就可以了Collections.sort(list, comparator)。

    4.5K11

    【ES三周年】分布式搜索索引elasticsearch JavaAPI编写ES搜索

    分布式搜索引擎02在昨天的学习中,我们已经导入了大量数据elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。...1.4.2.附近查询附近查询,也叫做距离查询(geo_distance):查询指定中心点小于某个距离值的所有文档。...然后把半径缩短3公里:图片可以发现,搜索的酒店数量减少到了5家。1.5.复合查询复合(compound)查询:复合查询可以将其它简单查询组合起来,实现更复杂的搜索逻辑。...2.1.排序elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。..."unit" : "km" // 排序距离单位      }    }  ]}这个查询的含义是:指定一个坐标,作为目标点计算每一个文档中,指定字段(必须是geo_point类型)的坐标 目标点的距离是多少根据距离排序示例

    1.4K51

    ElasticSearch-查询

    1.4.2.附近查询 附近查询,也叫做距离查询(geo_distance):查询指定中心点小于某个距离值的所有文档。...然后把半径缩短3公里: 可以发现,搜索的酒店数量减少到了5家。 1.5.复合查询 复合(compound)查询:复合查询可以将其它简单查询组合起来,实现更复杂的搜索逻辑。...2.1.排序 elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。..."unit" : "km" // 排序距离单位       }     }   ] } 这个查询的含义是: 指定一个坐标,作为目标点 计算每一个文档中,指定字段(必须是geo_point类型)...的坐标 目标点的距离是多少 根据距离排序 示例: 需求描述:实现对酒店数据按照到你的位置坐标的距离升序排序 提示:获取你的位置的经纬度的方式:https://lbs.amap.com/demo

    16410

    使用Redis实现附近的人及打车服务

    命令默认返回未排序的位置元素。 通过以下两个参数, 用户可以指定被返回位置元素的排序方式: ASC 根据中心的位置, 按照的方式返回位置元素。...DESC 根据中心的位置, 按照远到的方式返回位置元素。 在默认情况下, GEORADIUS 命令会返回所有匹配的位置元素。...具体的限制,由 EPSG:900913 / EPSG:3785 / OSGEO:41001 规定如下: • 有效的经度 - 180 度 180 度。...• 有效的纬度 - 85.05112878 度 85.05112878 度。 当坐标位置超出上述指定范围时,该命令将会返回一个错误。...,返回给LBS应用 GEORADIUS cars:locations 116.054579 39.030452 5 km ASC COUNT 10 进一步限定返回的车辆信息: ASC,让返回的车辆信息距离中心位置排序

    1.2K20

    ElasticSearch 中的地理类型和特殊类型,这个周末圆满了!

    ElasticSearch 安装开始 ElasticSearch 第三弹,核心概念介绍 ElasticSearch 中的中文分词器该怎么玩?...ElasticSearch 索引基本操作 ElasticSearch 文档的添加、获取以及更新 ElasticSearch 文档的删除和批量操作 ElasticSearch 文档路由,你的数据到底存在哪一个分片上...10.3 地理类型 使用场景: 查找某一个范围内的地理位置 通过地理位置或者相对中心点的距离来聚合文档 把距离整个文档的评分中 通过距离对文档进行排序 10.3.1 geo_point geo_point...地址位置转 geo_hash:http://www.csxgame.top/#/ 10.3.2 geo_shape ?...":{ "type": "ip" } } } } 添加文档: PUT blog/_doc/1 { "address":"192.168.91.1" } 搜索文档

    73220

    ElasticSearch(ES)简介及使用指引

    ES 简介 Elasticsearch 是一个分布式、Restful 风格的搜索数据分析引擎,能够解决常规和各种类型数据的存储及检索需求。...ES 的特点和优势 分布式实时文件存储,可将每一个字段存入索引,使其可以被检索 实时分析的分布式搜索引擎,分布式,索引拆分成多个分片,集群中的数据节点可以承载一个或多个分片,并且协调和处理各种操作,负载再平衡和路由大多数情况下自动完成...: string 类型在旧版本使用较多, 5.x 开始不再支持 string, 而用 text 和 keyword 替代,text 类型表明,当一个字段是要被全文搜索的,比如Email内容、产品描述,...Keyword 类型适用于索引结构化得字段,keyword类型的字段只能通过精确值搜索。 nested 嵌套类型是 object 数据类型的专用版本,允许对象数据可以彼此独立查询的方式索引。...geo_point 类型存储的是经纬度数值,可以距离对文档进行排序和过滤,而位置距离计算都可以通过查询 ES 得出。

    2.6K50

    【迅搜15】搜索技巧(五)其它功能

    入库顺序排序 这里入库顺序排序的意思就是根据元数据的那个真实唯一并自增长的 id 来排序了,使用 setDocOrder() 这个方法。...不过,XS 使用了另外一种方式,实现了一个非常简单的地理位置功能,就是通过指定两个数字类型的字段,分别代表经纬度,然后通过后台计算,返回距离远近排序的文档效果。...112.989442,'lat'=>28.183982])->setQuery('')->search()); 可以看到,我们使用长沙南站、黄兴广场、贺龙体育馆三个地标与库中的数据进行比对,默认情况下的顺序返回结果...它还有第二个参数,是以正序还是倒序返回的配置,默认是 false ,表示由,如果改成 true ,就变成由远到。...// 贺龙体育馆距离 长沙火车站 3243.6888814142 米! 说实话,这一步,其实在大部分 Geo 相关的简单应用我们也已经可以通过 XS 实现了。

    18610

    【ES三周年】elasticsearch 常用数据类型详解和范例

    ,使用term进行全字符串匹配"张三"可以搜索命中文档。...,需要保证搜索的内容和字段存储的内容完全匹配,所以当前索引库中匹配到了数据。...比如,年龄字段的取值最大值不会超过200,因此选择byte类型即可数值类型的数据也可用于对进行过滤、排序和聚合对于数值型数据,一般使用term搜索或者范围搜索elasticsearch 中的数字(数值)...,表示1970年1月1日0点到现在的毫秒数秒级别的整形(表示纪元开始的秒数的整数),表示1970年1月1日0点到现在的秒数在Elasticsearch内部,日期转换为UTC(如果指定了时区),并存储为毫秒数时间戳...用例场景如下在边界框内、中心点的特定距离内或多边形内查找地理点按地理位置或距中心点的距离聚合文档将距离整合到文档的相关性得分中距离对文档排序在生活中,我们可能会遇到根据当前所在的位置找到离自己最近的符合条件的一些商店

    3.6K61

    Redis如何让你加到了附近的人

    近水楼台之GeoHash Redis3.2开始的Geo模块.可通过二维的经纬度表示.使用勾股定理算出元素之间的距离,通过矩形区域现定元素数量,然后距离排序。...其次,交友软件中附近的人非常频繁,所以推出了Redis的地址位置距离排序算法GeoHash。 本质上GeoHash算是一种数据结构吗?...WITHDIST:传入WITHDIST参数,则返回结果会带上匹配位置与给定地理位置的距离。 ASC|DESC:默认结果是未排序的,传入ASC为排序,传入DESC为远到排序。...他不会排除自身 因为附近应用中出现的数据会出现大量的餐馆,加油站等,建议城市,区域等进行划分来降低单个集合的大小。...count - 指定数据集里返回多少元素,默认值为 10 。 ?

    78030

    GEO

    ,这个数量级也是非常大的 距离那些都弄完了还得再筛选一遍在附近的,又是一遍所有数据的遍历 如果符合附近的人的要求是需要按照距离排序,又得遍历计算 上述方式如果用户量比较小其实是可以实现的,但是现在移动互联网公司一般用户体量都很大...,全表遍历的方式基本都可以 pass 掉,所以接下来我们来看一种新的方案,用 redis geo 的方式来实现 redis geo 介绍 首先我们需要注意的是,redis geo 是 3.2 版本才有的...,所以需要用这个功能的朋友记得更新 redis 的版本 其实 redis geo 只有 6 个操作命令,知道这些命令基本思路就出来了 GEOADD:增加某个地理位置的坐标 GEOPOS:获取某个地理位置的坐标...ASC: 查找结果根据距离排序。 DESC: 查找结果根据远到排序。...是以某个元素为基准点 用 redis geo 的方式解决问题 其实上述命令熟悉了的同学这个问题就很好解决了 首先我们可以在后台把每个人的位置定时刷新到以 nearbyPeople 为 key 的 geo

    65710
    领券