美文网首页
Elasticsearch核心概念和原理

Elasticsearch核心概念和原理

作者: GALAace | 来源:发表于2021-05-25 15:30 被阅读0次

    搜索功能

    使用传统关系型数据库做搜索存在:性能差(模糊查询可能会索引失效)、不可靠、结果不准确(相关度低)等问题,为解决这类问题,可以使用ES来处理搜索请求。ES的核心是倒排索引

    倒排索引 数据结构

    1. 包含这个关键词的document list
    2. 关键词在每个doc中出现的次数(词频) TF(term frequency)
    3. 关键词在整个索引中出现的次数 IDF (inverse doc frequency)
    4. 关键词在当前doc中出现的次数
    5. 每个doc的长度,越长相关度越低
    6. 包含这个关键词的所有doc的平均长度

    Lucene

    Lucene是一个jar包,帮我们创建倒排索引,提供复杂的API。Lucene是单点的,扩展相对复杂。

    Elasticsearch

    • 基于Lucene开发的分布式的搜索,存储和数据分析引擎
    • 优点:
      1. 面向开发者友好,屏蔽了Lucene的复杂性,集群自动发现
      2. 自动维护数据在多个节点上的建立
      3. 请求负载均衡
      4. 自动维护冗余副本,部分节点宕机数据不会丢失
      5. 提供高级功能,符合查询,聚合分析,基于地理位置等
      6. 开箱即用,也可构建大型分布式集群,处理PB级数据
      7. 提供全文检索,同义词处理,相关度排名,海量数据近实时处理
    • 应用领域
      1. 百度(全文检索,高亮,搜索推荐)
      2.用户行为日志(用户点击、浏览、收藏、评论)
      3. BI (business intelligence)商业智能,数据挖掘统计
      4. ELK (Elasticsearch 数据存储 + Logstash 日志采集 + Kibana 可视化)

    ES核心概念

    1. Cluster(集群):每个集群至少包含两个节点
    2. Node(节点):集群中的每个节点,一个节点不代表一台服务器
    3. Field(字段): 一个数据字段,与index和type一起,可以定位一个doc
    4. Document (文档):ES最小的数据单元 是json格式
    5. Type:逻辑上的数据分类,es 7.x中删除了type的概念
    6. Index:一类相同或者类似的doc,比如一个员工索引,商品索引

    Shard分片:

    1. 一个index包含多个Shard,默认5个Primay,默认每个Primay分配一个Replica,Primay的数量在创建索引的时候设置,如果想修改,需要重建索引。
    2. 每个Shard都是一个Lucene实例,有完整的创建索引的处理请求能力。
    3. ES会自动在nodes上为我们做shard 均衡。
    4. 一个doc是不可能同时存在于多个PShard中的,但是可以存在于多个RShard中。
    5. Primay和对应的Replica不能同时存在于同一个节点,所以最低的可用配置是两个节点,互为主备。

    相关文章

      网友评论

          本文标题:Elasticsearch核心概念和原理

          本文链接:https://www.haomeiwen.com/subject/daairltx.html