目录

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. Java之引用传递

    引用传递分析 类本身就属于引用数据类型,既然是引用数据类型,就会牵扯到内存的引用传递. 引用传递的本质:同一块堆内存空间可以被不同的栈内存所指向,也可以变更指向. 引用传递案例 先看一个应用传递的例子 ...

  2. rust程序设计(3)结构体相关概念和疑问

    结构体 // 如何定义结构体 struct User { active: bool, username: String, email: String, sign_in_count: u64, } // ...

  3. .NET中有多少种定时器

    .NET中至少有6种定时器,每一种定时器都有它的用途和特点.根据定时器的应用场景,可以分为UI相关的定时器和UI无关的定时器.本文将简单介绍这6种定时器的基本用法和特点. UI定时器 .NET中的UI ...

  4. 深入了解MD5加密技术及其应用与局限

    一.MD5简介 MD5(Message Digest Algorithm 5)是一种单向散列函数,由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)于1991年发明.它主要用于将任 ...

  5. 主数据管理系统(MDM)集成方案

    在当今社会,数据已成为企业发展的宝贵财富.然而,大多数企业面临着数据散落在多个系统中.无法互相印证和共享的问题,导致数据使用效率低下.为解决这个问题,目前有两种典型途径:建设公司级系统或建立数据共享平 ...

  6. Educational Codeforces Round 101 (Rated for Div. 2) E - A Bit Similar

    题目传送门 很巧妙的一道题.对于一个 \(n\)位的 \(01\)字符串,一共有 \(2^n\)种不同字符排列,对于任意一个固定排列,在 \(2^n\)种排列中只有一种排列与该固定排列处处不等,而题干 ...

  7. .NET周刊【11月第4期 2023-11-26】

    国内文章 万字长文:从 C# 入门学会 RabbitMQ 消息队列编程 https://www.cnblogs.com/whuanle/p/17837034.html 如题,详细的介绍RabbitMQ ...

  8. 小程序的登录授权与退出功能(wx.getUserProfile)

    一.授权登录:wx.getUserProfile 1.使用wx.getUserProfile实现登录 1.javascript: login(){ wx.getUserProfile({ desc: ...

  9. 从根上理解elasticsearch(lucene)查询原理(1)-lucece查询逻辑介绍

    大家好,我是蓝胖子,最近在做一些elasticsearch 慢查询优化的事情,通常用分析elasticsearch 慢查询的时候可以通过profile api 去分析,分析结果显示的底层lucene在 ...

  10. [ABC261A] Intersection

    Problem Statement We have a number line. Takahashi painted some parts of this line, as follows: Firs ...