zoukankan      html  css  js  c++  java
  • 【沽泡学院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各版本差异

  • 相关阅读:
    各操作系统各文件系统支持的最大文件的大小
    Java调用百度地图API
    Java面试宝典(3)Java基础部分
    Java7中的try-with-resources
    Spring学习笔记(6)——IoC的三种注入方式
    cmd中java的编译命令——java和javac、javap
    Spring学习笔记(14)——注解零配置
    java中多种方式解析xml
    双三次插值
    RCNN到faster RCNN 简介
  • 原文地址:https://www.cnblogs.com/yeahwell/p/7627066.html
Copyright © 2011-2022 走看看