ElasticSearch 实现分词全文检索 - 经纬度定位商家距离查询
目录
ElasticSearch 实现分词全文检索 - 概述
ElasticSearch 实现分词全文检索 - ES、Kibana、IK安装
ElasticSearch 实现分词全文检索 - Restful基本操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 文档操作
ElasticSearch 实现分词全文检索 - 测试数据准备
ElasticSearch 实现分词全文检索 - term、terms查询
ElasticSearch 实现分词全文检索 - match、match_all、multimatch查询
ElasticSearch 实现分词全文检索 - id、ids、prefix、fuzzy、wildcard、range、regexp 查询
ElasticSearch 实现分词全文检索 - Scroll 深分页
ElasticSearch 实现分词全文检索 - delete-by-query
ElasticSearch 实现分词全文检索 - 复合查询
ElasticSearch 实现分词全文检索 - filter查询
ElasticSearch 实现分词全文检索 - 高亮查询
ElasticSearch 实现分词全文检索 - 聚合查询 cardinality
ElasticSearch 实现分词全文检索 - 经纬度查询
ElasticSearch 实现分词全文检索 - 搜素关键字自动补全(suggest)
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码
地图经纬度搜索
ES 中提供了一个数据类型 geo_point, 用来存储经纬度
创建ES索引
# 创建一个索引,指定 name,location
PUT /map
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"properties":{
"name":{
"type":"text"
},
"location":{
"type":"geo_point"
}
}
}
}
百度地图经纬度:http://api.map.baidu.com/lbsapi/getpoint/index.html
添加数据
# 添加数据
PUT /map/_doc/1
{
"name":"天安门",
"location":{
"lon":116.403119,
"lat":39.915599
}
}
PUT /map/_doc/2
{
"name":"北京大学",
"location":{
"lon":116.316486,
"lat":39.999416
}
}
PUT /map/_doc/3
{
"name":"清华大学",
"location":{
"lon":116.333267,
"lat":40.010276
}
}
ES地图搜索方式
- geo_distance: 直线距离检索方式

- geo_bound_box:以两个点确定一个巨型,获取在矩形内的全部数据

- geo_polygon:以多个点,确定一个多边形,获取多边形内的全部数据

实现地图检索
# 直接距离
POST /map/_search
{
"query":{
"geo_distance":{
"location":{ #确定一个点
"lon":116.433589,
"lat":39.909235
},
"distance":3000, # 2000 查不到,当前定位中,3公里内维护的数据(类似外卖)
"distance_type":"arc" # 指定形状为圆形,直接距离
}
}
}
# 左上、右下,确定巨型范围
POST /map/_search
{
"query":{
"geo_bounding_box":{
"location":{
"top_left":{ # 圆明园
"lon":116.309695,
"lat":40.013094
},
"bottom_right":{ # 天安门
"lon":116.403119,
"lat":39.915599
}
}
}
}
}
# 多点确定范围
POST /map/_search
{
"query":{
"geo_polygon":{
"location":{
"points":[
{
"lon":116.31027,
"lat":40.013315
},
{
"lon":116.335854,
"lat":39.998282
},{
"lon":116.301359,
"lat":39.992534
}
]
}
}
}
}
Java
@Test
void geoPolygon() throws Exception {
String indexName = "map";
RestHighLevelClient client = ESClient.getClient();
//1. 创建SearchRequest对象
SearchRequest request = new SearchRequest(indexName);
//2. 指定查询条件
List<GeoPoint> points = new ArrayList<>();
points.add(new GeoPoint(40.013315, 116.31027));
points.add(new GeoPoint( 39.998282,116.335854));
points.add(new GeoPoint( 39.992534,116.301359));
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(QueryBuilders.geoPolygonQuery("location", points));
request.source(builder);
//3. 执行查询
SearchResponse resp = client.search(request, RequestOptions.DEFAULT);
//4. 输出返回值
for (SearchHit hit : resp.getHits().getHits()) {
System.out.println(hit.getSourceAsMap());
}
}
ElasticSearch 实现分词全文检索 - 经纬度定位商家距离查询的更多相关文章
- ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
可以先看下列文章 目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文 ...
- ElasticSearch 实现分词全文检索 - ES、Kibana、IK安装
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- ElasticSearch 实现分词全文检索 - 测试数据准备
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- ElasticSearch 实现分词全文检索 - match、match_all、multimatch查询
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- ElasticSearch 实现分词全文检索 - id、ids、prefix、fuzzy、wildcard、range、regexp 查询
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- ElasticSearch 实现分词全文检索 - Scroll 深分页
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- ElasticSearch 实现分词全文检索 - delete-by-query
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- ElasticSearch 实现分词全文检索 - 复合查询
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- ElasticSearch 实现分词全文检索 - 高亮查询
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- ElasticSearch 实现分词全文检索 - 聚合查询 cardinality
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
随机推荐
- HTTP请求中浏览器的缓存机制(转)
摘要:在Web开发过程中,我们可能会经常遇到浏览器缓存的问题.本文作者详细解释了浏览器缓存的机制,帮助读者更深层次的认识浏览器的缓存. 流程 当资源第一次被访问的时候,HTTP头部如下 (Reques ...
- shell解析xml文档
需要解析的源文件: /tmp/cameralist : <?xml version="1.0" encoding="UTF-8"?><came ...
- DNS 服务 docker-bind 的部署使用
前言 前面使用 nginx 代理转发了几个域名到服务器,但是每次添加一个域名都需要在客户端添加一行 hosts 文件,无疑是繁琐的,其中也提到可以使用 DNS 来实现自动解析域名 到指定服务器的功能, ...
- Error running 'TestAlterNickname.test': Command line is too long. Shorten command line for TestAlterNickname.test or also for JUnit default configuration
问题描述 如图IDEA报错问题,发生在我用JUnit进行测试时. 解决方法 1. 直接点击 default 2. Modify options -> Shorten command line 3 ...
- phpmyadmin修改上传限制,phpmyadmin修改上传文件大小限制,docker版本phpmyadmin
我用的是DOCKER 版本的phpmyadmin 修改/usr/local/etc/php/conf.d/phpmyadmin-misc.ini 内的限制变量文件为 100M,重启docker 容器后 ...
- 七天.NET 8操作SQLite入门到实战 - 第五天引入SQLite-net ORM并封装常用方法(SQLiteHelper)
前言 上一章节我们搭建好了EasySQLite的前后端框架,今天我们的主要任务是在后端框架中引入SQLite-net ORM并封装常用方法(SQLiteHelper). 七天.NET 8操作SQLit ...
- Redis本地安装以及使用(详细教程)
Redis 安装 Windows 下载安装 Redis默认端口:6379 整个过程如下: 1.下载连接 https://github.com/tporadowski/redis/releases Re ...
- MybatisPlus入门到进阶
1.创建一个SpringBoot项目 2.导入相关依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...
- MySQL调优的一些总结
SQL优化可以从那几个方面去优化 1.基本写法优化: 1.少使用select * ,尽量使用具体字段: 2.对于条件来说等号之类两边的字段类型要一致,字符串不加单引号索引会失效: 3.尽量少使用Ord ...
- 华为防火墙1day?
背景信息 缺省情况下,FW通过8887端口提供内置的本地Portal认证页面,用户可以主动访问或HTTP重定向至认证页面(https://接口IP地址:8887)进行本地Portal认证. 当企业部署 ...