目录

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 实现分词全文检索 - 经纬度定位商家距离查询的更多相关文章

  1. ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】

    可以先看下列文章 目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文 ...

  2. ElasticSearch 实现分词全文检索 - ES、Kibana、IK安装

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  3. ElasticSearch 实现分词全文检索 - 测试数据准备

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  4. ElasticSearch 实现分词全文检索 - match、match_all、multimatch查询

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  5. ElasticSearch 实现分词全文检索 - id、ids、prefix、fuzzy、wildcard、range、regexp 查询

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  6. ElasticSearch 实现分词全文检索 - Scroll 深分页

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  7. ElasticSearch 实现分词全文检索 - delete-by-query

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  8. ElasticSearch 实现分词全文检索 - 复合查询

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  9. ElasticSearch 实现分词全文检索 - 高亮查询

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  10. ElasticSearch 实现分词全文检索 - 聚合查询 cardinality

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

随机推荐

  1. go中的内存逃逸

    内存逃逸(memory escape)是指在编写 Go 代码时,某些变量或数据的生命周期超出了其原始作用域的情况.当变量逃逸到函数外部或持续存在于堆上时,会导致内存分配的开销,从而对程序的性能产生负面 ...

  2. JUC并发编程学习笔记(四)8锁现象

    8锁现象 八锁->就是关于锁的八个问题 锁是什么,如何判断锁的是谁 对象.class模板 深刻理解锁 锁的东西无外乎就两样:1.同步方法的调用者,2.Class模板. 同一个锁中,只有当前线程资 ...

  3. 一分钟理解TCP重传

    为什么需要重传 任何信息在介质中传输可能丢失,这是由于传输介质的物理特性决定的,所以网络不可能被设计为"可靠的"(不是由于考虑"性能"原因而是压根做不到).既然 ...

  4. [Python急救站课程]斐波那契数列的计算吧

    斐波那契数列的计算 a, b = 0, 1 while a < 1000: # 输出不大于1000 的序列.while表示循环 print(a, end=',') a, b = b, a + b

  5. "拍牌神器"是怎样炼成的(一)--- 键鼠模拟之WinAPI

    作为本系列博文的开篇,有必要先做些声明,用于免责.以绝口水: 博文仅围绕已经弃用的.C/S结构的<上海市个人非营业性客车额度竞拍程序>客户端(NetBidClient)进行介绍,对于正在使 ...

  6. Java实现两字符串相似度算法

    1.编辑距离 编辑距离:是衡量两个字符串之间差异的度量,它表示将一个字符串转换为另一个字符串所需的最少编辑操作次数(插入.删除.替换). 2.相似度 计算方法可以有多种,其中一种常见的方法是将编辑距离 ...

  7. git 添加/删除子模块

    背景 在很多项目中经常会重复使用一些代码块, 例如按键处理, LED提示, modbus等等 在传统开发中, 我们经常是将一些代码写成独立的.c/.h模块. 但随着时间的推移我们经常需要根据一 些项目 ...

  8. 暴力+DP:买卖股票的最佳时机

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润. 注意:你不能在买入股票前卖出股票. ...

  9. python列表添加元素之append()函数和insert()函数

    append()函数 在列表中添加新元素时,最简单的方法就是附加在末尾: list_1 = ['one', 'two', 'three'] print(list_1) list_1.append('f ...

  10. N100低功耗win11安装wsl2当入门nas

    前言 最近入了一台16gb+512gb的N100,想着用来存些资源,当个nas,偶尔要用用windows系统,所以想直接在这上面搞个虚拟机算了,WSL2似乎是一个不错的选择,下面介绍捣鼓的教程. 没用 ...