SpringBoot Data ElasticSearch 4.* 使用 GeoPoint 坐标位置获取范围内数据

这篇具有很好参考价值的文章主要介绍了SpringBoot Data ElasticSearch 4.* 使用 GeoPoint 坐标位置获取范围内数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.前言

近期项目需要用到ElasticSearch根据坐标获取范围内的数据,以前有所接触的仅仅是老版本,去了解了一下新版本,发现很多方法已经处于弃用状态。而在网络上苦苦搜寻,却很少见到关于4.*版本关于GeoPoint新型写法的详细文章,在官方文档中,对于新人而言却又很难理解使用。本文将记录使用GeoPoint根据地理位置获取数据的案例。

注:作者目前是边学边用,有什么不对的地方请指出

二.使用案例

作者版本信息:Elasticsearch 7.17.3

  1. 依赖版本

参考官方文档:https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface

依赖搜索:https://mvnrepository.com

根据自己的ES版本对照以下依赖版本

Spring Data Release Train

Spring Data Elasticsearch

Elasticsearch

Spring Framework

Spring Boot

2022.0 (Turing)

5.0.x

8.5.3

6.0.x

3.0.x

2021.2 (Raj)

4.4.x

7.17.3

5.3.x

2.7.x

2021.1 (Q)

4.3.x

7.15.2

5.3.x

2.6.x

2021.0 (Pascal)

4.2.x[1]

7.12.0

5.3.x

2.5.x

2020.0 (Ockham)[1]

4.1.x[1]

7.9.3

5.3.2

2.4.x

Neumann[1]

4.0.x[1]

7.6.2

5.2.12

2.3.x

Moore[1]

3.2.x[1]

6.8.12

5.2.12

2.2.x

Lovelace[1]

3.1.x[1]

6.2.2

5.1.19

2.1.x

Kay[1]

3.0.x[1]

5.5.0

5.0.13

2.0.x

Ingalls[1]

2.1.x[1]

2.4.0

4.3.25

1.5.x

  1. 依赖

父依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.9</version>
    <relativePath/>
</parent>

直接导入spring-boot-starter-data-elasticsearch依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

不需要指定版本,会根据你的SpringBoot版本自动指定spring-data-elasticsearch 版本

SpringBoot Data ElasticSearch 4.*  使用 GeoPoint 坐标位置获取范围内数据
  1. YMAL配置类

相比较于之前的老版本,可以直接使用uris来指定地址

spring:
  elasticsearch:
    uris: http://localhost:9200
  1. 实体类Document

这里用到了lombok

GeoPoint须要用@GeoPointField注解标注

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "test",createIndex = true)
public class Test {
    @Id
    Long id;
    @Field(type = FieldType.Text)
    String name;
    //坐标对象
    @GeoPointField
    GeoPoint location;
}
  1. 访问层Repository


import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.data.geo.Distance;
import org.springframework.data.geo.Point;

import java.util.List;

public interface TestRepository extends ElasticsearchRepository<Test,Long> {
    /**
     * 根据范围获取数据
     * @param point x y 对应经纬度
     * @param distance 范围
     * @return
     */
    List<Test> findByLocationNear(Point point, Distance distance);
}

此处的方法用法可以根据需求来

例如:findByLocationNearandAndName(Point point, Distance distance,String name);

返回值可以参考:

Return type

Description

void

Denotes no return value.

Primitives

Java primitives.

Wrapper types

Java wrapper types.

T

A unique entity. Expects the query method to return one result at most. If no result is found, null is returned. More than one result triggers an IncorrectResultSizeDataAccessException.

Iterator<T>

An Iterator.

Collection<T>

A Collection.

List<T>

A List.

...

更多参考官方文档

SpringBoot Data ElasticSearch 4.*  使用 GeoPoint 坐标位置获取范围内数据
  1. 使用

@SpringBootApplication
@EnableElasticsearchRepositories
public class Run {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(Run.class, args);
        TestRepository testRepository = run.getBean(TestRepository.class);
        Test test = testRepository.save(new Test(new Long(10001), "来打我啊", new GeoPoint().reset(50.2, 50.222)));
        System.out.println(test.toString());

        List<Test> list = testRepository.findByLocationNear(new Point(50.0,50.0), new Distance(100, Metrics.KILOMETERS));
        System.out.println("100KM内有:");
        list.forEach(ts -> {
            System.out.println(ts.toString());
        });
        List<Test> list2 = testRepository.findByLocationNear(new Point(50.0,50.0), new Distance(10, Metrics.KILOMETERS));
        System.out.println("10KM内有:");
        list2.forEach(ts -> {
            System.out.println(ts.toString());
        });
    }
}

new Distance(参1参2);

参1:距离

参2:单位

调用新增 结果:

SpringBoot Data ElasticSearch 4.*  使用 GeoPoint 坐标位置获取范围内数据

调用查询 结果:

SpringBoot Data ElasticSearch 4.*  使用 GeoPoint 坐标位置获取范围内数据

结束(有问题可以评论区或私信)文章来源地址https://www.toymoban.com/news/detail-406014.html

到了这里,关于SpringBoot Data ElasticSearch 4.* 使用 GeoPoint 坐标位置获取范围内数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt QGraphicsItem获取鼠标位置对应图像坐标

    本次使用了QGraphicsView来加载图像,然后给其设置了一个QGraphicsScene场景,再给场景添加了一个自定义的QGraphicsItem,在其中重写了paint事件,用来重绘图像。 正常情况时,QGraphicsItem上图像的有效区域QRect大小和QGraphicsView一致,此时正好铺满,鼠标位置的坐标可以比较轻松的推

    2024年01月22日
    浏览(43)
  • 微信小程序之移动地图获取坐标和位置信息

    一、实现效果演示 其实就是在小程序上移动,然后实时的获取地址中心点的坐标信息,然后通过坐标数据信息获取地址信息的过程;  二、前端代码实现 view class=\\\"mapshow\\\"   map class=\\\"mapUI\\\" id=\\\"myMap\\\" scale=\\\"13\\\" bindmarkertap=\\\"bindmarkertap\\\" data-index=\\\"{{index}}\\\" show-location markers=\\\"{{marker

    2024年02月03日
    浏览(48)
  • LiveGBS国标GB/T28181国标平台功能-电子地图移动位置订阅mobileposition地图定位GPS轨迹坐标位置获取redis获取位置

    正常情况,是开启mobileposition位置订阅,订阅设备位置 国标设备菜单-》编辑 勾选是否开启 位置订阅 LiveGBS-》基础配置-》信令服务配置-》显示更多配置-》全局订阅项目 有的时候对接的下级,下级过来的位置变化不是通过 mobileposition 位置订阅上报的,而是通过 catalog notify 上

    2024年02月08日
    浏览(77)
  • Elasticsearch集群搭建、数据分片以及位置坐标实现附近的人搜索

    es使用两种不同的方式来发现对方: 广播 单播 也可以同时使用两者,但默认的广播,单播需要已知节点列表来完成 当es实例启动的时候,它发送了广播的ping请求到地址 224.2.2.4:54328 。而其他的es实例使用同样的集群名称响应了这个请求。 一般这个默认的集群名称就是上面的

    2024年02月06日
    浏览(52)
  • 用户Ip地址和百度地图api接口获取用户地理位置(经纬度坐标,城市)

    ?php //获取用户ip(外网ip 服务器上可以获取用户外网Ip 本机ip地址只能获取127.0.0.1) function   getip(){      if (! empty ( $_SERVER [ \\\"HTTP_CLIENT_IP\\\" ])){      $cip   =  $_SERVER [ \\\"HTTP_CLIENT_IP\\\" ];      }      else   if (! empty ( $_SERVER [ \\\"HTTP_X_FORWARDED_FOR\\\" ])){      $cip   =  $_SERVER [ \\\"HTTP_X_FOR

    2024年02月11日
    浏览(72)
  • Python 获取 IOS/Iphone/Ipad等设备拍摄的HEIC图片的拍摄地址/坐标/位置以及python的googleEarth的xml文件绘制初步

    出去旅游,用iphone拍了非常多的照片,心想这些照片都有位置信息和拍摄时间信息,那能不能用python制作一个程序,输入所有照片,然后读取这些信息,最后输出一个xml路径文件,打开在googleEarth看。虽然最近逐步奉行“不讨论意义主义”,但我觉得此举的意义,首先是折腾

    2024年02月21日
    浏览(64)
  • 【VTK】基于读取出来的 STL 模型,当用户点击鼠标左键时,程序将获取点击位置的点,显示其坐标,并设置它为模型的旋转原点

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 基于读取出来的 STL 模型,实现当用户点击鼠标左键时,程序将获取点击位置的点,显示其坐标,并设置它为模型的旋转原点。 详细流程为:点击 Select 按钮,鼠标具备选择的功能

    2024年02月14日
    浏览(46)
  • Springboot --- 整合spring-data-jpa和spring-data-elasticsearch

    SpringBoot: 整合Ldap. SpringBoot: 整合Spring Data JPA. SpringBoot: 整合Elasticsearch. SpringBoot: 整合spring-data-jpa和spring-data-elasticsearch. SpringBoot: 整合thymeleaf. SpringBoot: 注入第三方jar包. SpringBoot: 整合Redis. SpringBoot: 整合slf4j打印日志. SpringBoot: 整合定时任务,自动执行方法. SpringBoot: 配置多数据源

    2023年04月25日
    浏览(73)
  • SpringBoot整合Spring Data Elasticsearch,写给互联网大厂员工的真心话

    @RunWith(SpringRunner.class) @SpringBootTest(classes = ItcastElasticsearchApplication.class) public class IndexTest { @Autowired private ElasticsearchTemplate elasticsearchTemplate; //注入ElasticsearchTemplate类 @Test public void testCreate(){ // 创建索引,会根据Item类的@Document注解信息来创建 elasticsearchTemplate.createIndex(Item.class)

    2024年04月14日
    浏览(71)
  • 【工作记录】springboot集成spring-data-elasticsearch访问es及问题解决

    ​ 前文我们介绍了通过可视化爬虫爬取新闻到Mysql库、基于docker-compose的elk集群部署及抽取mysql数据到es的过程,本文我们介绍通过集成springboot和spring-data-elasticsearch客户端完成连接es并查询数据的开发过程以及遇到的问题和解决方案,希望对大家能有所帮助,对文中内容有任何

    2023年04月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包