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搜索附近的人的更多相关文章

  1. 基于Elasticsearch搜索平台设计

    背景 随着公司业务的高速发展以及数据爆炸式的增长,当前公司各产线都有关于搜索方面的需求,但是以前的搜索服务系统由于架构与业务上的设计,不能很好的满足各个业务线的期望,主要体现下面三个问题: 不能支持对 ...

  2. ElasticStack学习(六):ElasticSearch搜索初探

    一.ElasticSearch搜索介绍 1.ElasticSearch搜索方式主要分为以下两种: 1).URI Search:此种查询主要是使用Http的Get方法,在URL中使用查询参数进行查询: ...

  3. Elasticsearch搜索调优权威指南 (2/3)

    本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/AAkVdzmkgdBisuQZldsnvg 英文原文:https://qbox.io/blog/el ...

  4. Elasticsearch搜索资料汇总

    Elasticsearch 简介 Elasticsearch(ES)是一个基于Lucene 构建的开源分布式搜索分析引擎,可以近实时的索引.检索数据.具备高可靠.易使用.社区活跃等特点,在全文检索.日 ...

  5. 看完这篇还不会 Elasticsearch 搜索,那我就哭了!

    本文主要介绍 ElasticSearch 搜索相关的知识,首先会介绍下 URI Search 和 Request Body Search,同时也会学习什么是搜索的相关性,如何衡量相关性. Search ...

  6. 一次 ElasticSearch 搜索优化

    一次 ElasticSearch 搜索优化 1. 环境 ES6.3.2,索引名称 user_v1,5个主分片,每个分片一个副本.分片基本都在11GB左右,GET _cat/shards/user 一共 ...

  7. ElasticSearch搜索介绍四

    ElasticSearch搜索 最基础的搜索: curl -XGET http://localhost:9200/_search 返回的结果为: { "took": 2, &quo ...

  8. php根据汉字获取拼音(php基于拼音搜索实现原理)

    php根据汉字获取拼音(php基于拼音搜索实现原理) 代码一:获取字符串汉字首字母,兼容GBK和UTF-8 <?php function getfirstchar($s0){   //获取单个汉 ...

  9. Elasticsearch搜索结果返回不一致问题

    一.背景 这周在使用Elasticsearch搜索的时候遇到一个,对于同一个搜索请求,会出现top50返回结果和排序不一致的问题.那么为什么会出现这样的问题? 后来通过百度和google,发现这是因为 ...

随机推荐

  1. 单端IO标准

    单端标准 常用的单端IO标准是LVTTL和LVCMOS. 目前业界绝大部分FPGA/CPLD器件的LVCOMS的IO是由CMOS推挽(push-pull)驱动器构成的,这种结构是上面的PMOS管和下面 ...

  2. 自己写的highcharts级联(点击事件)

    $.fn.extend({ Zhu: function (option) { var id = $(this).attr("id"); $('#' + id).highcharts ...

  3. 浅谈Java中的对象和对象引用

    浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...

  4. 四 Mixer

    Mixer在应用程序和基础架构后端之间提供通过中介层.它的设计将策略决策移出应用层,用运维人员能够控制的配置取而代之. Mixer的设计目的是改变层次之间的边界,以此降低总体复杂性.从服务代码中剔除策 ...

  5. mybatis学习7 实战项目

    自己写一个实战项目,最好和hibernate做对比.

  6. CRC 简介

    CRC wiki,历史发展,各个版本的用途 等 https://en.wikipedia.org/wiki/Cyclic_redundancy_check (apple)crc32.c /* * Th ...

  7. __align(num) 分析

    这几天用2440读写SD卡(FAT32文件系统),定义了个文件信息的数据结构里边数据类型有unsigned char, unsigned int, unsigned long几种,在从SD卡上读取数据 ...

  8. sql---left join;right join;inner join---区别

    sql---left join;right join;inner join---区别 分为以下几类: 1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自 ...

  9. sass实用知识点

    本文总结sass相关核心知识点 说明:本文的内容是,我在开发实践中总结的实用性比较强的sass知识点,其他未涉及的知识,如果对你有作用请自行查阅 sass知识目录 嵌套 注释 SassScript @ ...

  10. java 多线程系列---JUC原子类(二)之AtomicLong原子类

    概要 AtomicInteger, AtomicLong和AtomicBoolean这3个基本类型的原子类的原理和用法相似.本章以AtomicLong对基本类型的原子类进行介绍. AtomicLong ...