ES基础总结

ES基础总结,第1张

ES基础总结

目录

一、简介 

1、Lucene与倒排索引

二、基本概念

三、ES与关系型数据库

四、分片(Shard)和副本(Replica)


一、简介 

        ES官方简介:Elasticsearch 是一个基于Lucene的分布式搜索、存储和分析引擎。所以不要只是将ES认为是一个搜索引擎。但是我们主要学习和使用的都是搜索和分析功能。ES实现搜索主要使用的是倒排索引。

1、Lucene与倒排索引

        Lucene其实就是一个jar包,为我们提供了复杂的API,帮我们创建倒排索引。但是Lucene在做集群搜索时存在一些缺点,下图为Lucene实现集群搜索的展示以及缺点总结。

                那什么是倒排索引呢?我们使用关系型数据库实现搜索功能时,会将这个词项在数据库中遍历查找,这种方式性能非常差,同时查询到的值相关度比较低。而倒排索引会将词项的一些信息进行存储,倒排索引的数据结构(一些词语会在后边通过与传统数据库字段进行对比理解):

1、包含关键词的document list.。

2、TF:关键词在每个document中出现的次数。越大越好,比如document-1为:我是张春明,document-2为:我是张春明,是一个小男孩。关键字张春明在1中的TF就比在2的大。

3、IDF:关键词在整个索引中出现的次数,越小越好。

4、关键词在当前document出现次数。

5、每个document的长度。

6、包含词项的所有document的平均长度。

        实例如下: 

二、基本概念

        主要是ES中各种重要的指标。 

  1. 索引(Index):ElasticSearch把数据存放到一个或者多个索引(indices)中。ElasticSearch内部用Apache Lucene实现索引中数据的读写。但是在ElasticSearch中被视为单独的一个索引(index),在Lucene中可能不止一个。这是因为在分布式体系中,ElasticSearch会用到分片(shards)和备份(replicas)机制将一个索引(index)存储多份。
  2. 文档(document):文档(document)由一个或者多个字段(Field)组成。ES中的文档(document)是没有固定的模式和统一的结构。
  3. 文档类型(Type):每个文档在ElasticSearch中都必须设定它的类型。文档类型使得同一个索引中在存储结构不同文档时,只需要依据文档类型就可以找到对应的参数映射(Mapping)信息,方便文档的存取。ES 7之后删除type概念。
  4. 节点(Node):单独一个ElasticSearch服务器实例称为一个节点。对于许多应用场景来说,部署一个单节点的ElasticSearch服务器就足够了。但是考虑到容错性和数据过载,配置多节点的ElasticSearch集群是明智的选择。
  5. 集群(Cluster):集群是多个ElasticSearch节点的集合。是提供高可用与高性能的重要手段
  6. 分片索引(Shard):集群能够存储超出单机容量的信息。为了实现这种需求,ElasticSearch把数据分发到多个存储Lucene索引的物理机上。这些Lucene索引称为分片索引,这个分发的过程称为索引分片(Sharding)。
  7. 需要注意的是:集群中分片的数量需要在索引创建前配置好,而且服务器启动后是无法修改的,至少目前无法修改。
  8. 索引副本(Replica):当集群负载增长,用户搜索请求可能会阻塞在单个节点上时,通过索引副本(Replica)机制就可以解决这个问题。在提供基础查询性能的同时,也保证了数据的安全性。即如果主分片数据丢失,ElasticSearch通过索引副本使得数据不丢失。索引副本可以随时添加或者删除,所以用户可以在需要的时候动态调整其数量。
  9. 网管(Gateway):ES运行过程中需要的所有数据(文档,状态、索引参数等)都被存储在Gateway中。
三、ES与关系型数据库 结构对比 关系型数据库ESDatabaseindexTabletypeRowdocumentColumnFieldSchemaMappingSQLQuery DSL *** 作对比ES方法数据库处理说明POSTUpdate获取信息或者更新GETRead获取信息PUTCreate创建或覆盖DELETEDelete删除 四、分片(Shard)和副本(Replica)

        ES的“分片(shard)”机制可将一个索引内部的数据分布地存储于多个节点,它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,这每一个物理的Lucene索引称为一个分片(shard)。
        每个分片其内部都是一个全功能且独立的索引,因此可由集群中的任何主机存储。创建索引时,用户可指定其分片的数量,默认数量为5个。
        Shard有两种类型:primary和replica,即主shard及副本shard。
        Primary shard用于文档存储,每个新的索引会自动创建5个Primary shard,当然此数量可在索引创建之前通过配置自行定义,不过,一旦创建完成,其Primary shard的数量将不可更改。
        Replica shard是Primary Shard的副本,用于冗余数据及提高搜索性能。 
        每个Primary shard默认配置了一个Replica shard,但也可以配置多个,且其数量可动态更改。ES会根据需要自动增加或减少这些Replica shard的数量。
        ES集群可由多个节点组成,各Shard分布式地存储于这些节点上。ES可自动在节点间按需要移动shard,例如增加节点或节点故障时。简而言之,分片实现了集群的分布式存储,而副本实现了其分布式处理及冗余功能。

        

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5669172.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存