【沽泡学院07】基于ElasticSearch搜索附近的人
1. 为什么要选择ElasticSearch
1)ElasticSearch
优点:
分布式、实时的、Push replication
完全支持Apache Lucene的接近实时的搜索
处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置
Gateway概念,使备份更加简单
各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作
缺点:
只有一名开发则
还不够自动,不适合当前新的Index Warmup API(热索引)
2)Solr
优点:
Solr有一个更成熟的社区
支持多种格式的索引
Solr比较成熟、稳定
不考虑建索引的同时进行搜索,速度更快
缺点:
建立索引时,搜索效率下降,实时索引搜索效率不高
缺点:
建立索引时,搜索效率下降,实时索引搜索效率不高。
2. 浅析ElasticSearch工作原理
1)Lucence,基本架构,解决方案
Document 行(Row)文本
Index索引(数据关键值)->提高查询效率
Analyzer分词器(打标签)->提高查询精准度
3. 查询附近的人功能实现思路
操作流程:
1)利用GPS设备获取每个人的位置(经纬度坐标),然后上传到服务器
2)根据Tom的位置,利用大数据搜索引擎实时搜索出附近的人,列出其个人信息
3)实现条件筛选,只看女生或者只看男生
代码实现:
1)利用ES搜索引擎随机生成10W条模拟数据
2)设置Tom所在位置
3)从模拟数据中匹配出符合条件的人
4)开始加人,聊天
4. 从10w条记录中快速搜索附近的人
对比学习
数据库:建库(DB),建表(Table),建约束
JDBC API:加载驱动类,建立连接(客户端),建立语句集SQL,执行语句集,获取结果集(ResultSet),关闭结果、语句、连接
ES:建库(Index),建表(IndexType),主键
ES API:建立连接(创建客户端TransportClient),查询构造器(构造查询条件Request),执行语句集(execute),获取结果集(Response)、关闭以上诸操作
geo 自动运用GEO算法,经纬度换算成距离(m, km)
5. 使用ES需要注意的地方
1)Lucence版本差异
2)ElasticSearch各版本差异
【沽泡学院07】基于ElasticSearch搜索附近的人的更多相关文章
- 基于Elasticsearch搜索平台设计
背景 随着公司业务的高速发展以及数据爆炸式的增长,当前公司各产线都有关于搜索方面的需求,但是以前的搜索服务系统由于架构与业务上的设计,不能很好的满足各个业务线的期望,主要体现下面三个问题: 不能支持对 ...
- ElasticStack学习(六):ElasticSearch搜索初探
一.ElasticSearch搜索介绍 1.ElasticSearch搜索方式主要分为以下两种: 1).URI Search:此种查询主要是使用Http的Get方法,在URL中使用查询参数进行查询: ...
- Elasticsearch搜索调优权威指南 (2/3)
本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/AAkVdzmkgdBisuQZldsnvg 英文原文:https://qbox.io/blog/el ...
- Elasticsearch搜索资料汇总
Elasticsearch 简介 Elasticsearch(ES)是一个基于Lucene 构建的开源分布式搜索分析引擎,可以近实时的索引.检索数据.具备高可靠.易使用.社区活跃等特点,在全文检索.日 ...
- 看完这篇还不会 Elasticsearch 搜索,那我就哭了!
本文主要介绍 ElasticSearch 搜索相关的知识,首先会介绍下 URI Search 和 Request Body Search,同时也会学习什么是搜索的相关性,如何衡量相关性. Search ...
- 一次 ElasticSearch 搜索优化
一次 ElasticSearch 搜索优化 1. 环境 ES6.3.2,索引名称 user_v1,5个主分片,每个分片一个副本.分片基本都在11GB左右,GET _cat/shards/user 一共 ...
- ElasticSearch搜索介绍四
ElasticSearch搜索 最基础的搜索: curl -XGET http://localhost:9200/_search 返回的结果为: { "took": 2, &quo ...
- php根据汉字获取拼音(php基于拼音搜索实现原理)
php根据汉字获取拼音(php基于拼音搜索实现原理) 代码一:获取字符串汉字首字母,兼容GBK和UTF-8 <?php function getfirstchar($s0){ //获取单个汉 ...
- Elasticsearch搜索结果返回不一致问题
一.背景 这周在使用Elasticsearch搜索的时候遇到一个,对于同一个搜索请求,会出现top50返回结果和排序不一致的问题.那么为什么会出现这样的问题? 后来通过百度和google,发现这是因为 ...
随机推荐
- Xcode工具特性
1.注释 #pragma mark 注释说明#pragma mark - 分类/分组注释说明 2.自定义代码块. 3.多文本编辑框 View>>Assistant Editor
- uboot中的TEXT_BASE
转载:http://blog.csdn.net/xxblinux/article/details/6281295 我们都知道U-BOOT分为两个阶段,第一阶段是(~/cpu/arm920t/start ...
- 【转】CSG(Closed Subscriber Group)闭合用户组
CSG是3GPP R8中引入的概念,定义为闭合用户组.有以下特点: 1. 每个CSG由一个CSG ID标识 2. 同一用户可属于多个CSG,用户与CSG的关系就好比签约,启用了CSG小区只会允许签约用 ...
- 机器学习:PCA(高维数据映射为低维数据 封装&调用)
一.基础理解 1) PCA 降维的基本原理 寻找另外一个坐标系,新坐标系中的坐标轴以此表示原来样本的重要程度,也就是主成分:取出前 k 个主成分,将数据映射到这 k 个坐标轴上,获得一个低维的数据集. ...
- vector向量容器元素排序与查找
1.利用标准库函数sort()对vector进行排序 参考源码: #include <algorithm> #include <vector> vector<int> ...
- maven如何过滤占位符
今天遇到一个问题,就是properties文件中赋值用的这种形式${xxx},真正的值是配置在pom的profile中,但是未生效. 后来找到原因,原来是pom中少了一段代码: <build&g ...
- 二 Istio设计的核心原则
Istio架构关键目标 最大化透明度:Istio将自身自动注入到服务间所有的网络路径中.Istio使用sidecar代理来捕获流量,并且在尽可能的地方自动编程网络层,通过代理来路由流量,无需改动应用程 ...
- C字符串翻转
实现字符串翻转,思路很简单,就是首尾字符对调. void reverse(char* str){ char* p = str + strlen(str) - 1;//最后一个字符地址 char tem ...
- Python类(五)-反射
反射即通过字符串映射或修改程序运行时的状态.属性.方法 有4个方法: hasattr(): hasattr(object,string):object为实例化的对象,string为字符串 判断对象ob ...
- 回调函数(callback)经典解答
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:常溪玲链接:http://www.zhihu.com/question/19801131/answer/13005983来源: ...