美文网首页
Elasticsearch实战 深入功能

Elasticsearch实战 深入功能

作者: 二次元日系控铲屎官 | 来源:发表于2019-03-10 22:02 被阅读0次

    Elasticsearch中数据是如何组织的?

    1. 逻辑设计 用于索引和搜索的基本单位是文档,可以将其认为是关系型数据库中的一行。文档以类型来分组,类型包含若干文档,类似表格包含若干行。最终,一个或多个类型存在于同一索引中,索引是更大的容器,类似SQL中的数据库。

    2. 物理设计 Elasticsearch将每个索引划分为分片,每份分片可以在集群中的不同服务器间迁移。通常,应用程序无需关心这些,因为无论Elasticsearch是单台还是多台服务器,应用和Elasticsearch的交互基本保持不变。但是开始管理集群的时候,就需要留心了。原因是,物理设计的配置方式决定了集群的性能、可扩展性和可用性。

    一、理解逻辑设计:文档、类型和索引

    索引名称+类型名称+文档ID=唯一确定的文档

    1.文档

    Elasticsearch是面向文档的,索引和搜索数据的最小单位是文档。文档有几个重要属性

    1)文档是自我包含的。

    2)文档可以是层次型的。

    3)文档拥有灵活的结构。

    2.类型

    类型是文档的逻辑容器,类似于表格是行的容器。每个类型中字段的定义成为映射,每个字段都是通过不同的方式处理。首先,映射包含某个类型中当前索引的所有文档的所有字段,但是不是所有的文档必须要有所有的字段。同样,如果一篇新近索引的文档拥有一个映射中尚不存在的字段,Elasticsearch会自动地将新字段加入映射。映射类型只是将文档进行逻辑划分,从物理角度来看,同一索引中的文档都是写入磁盘,而不考虑他们所属的映射类型。

    3.索引

    索引是映射类型的容器。一个Elasticsearch索引非常像关系型世界的数据库,是独立的大量文档集合。每个索引存储在磁盘上的同组文件中;索引存储了所有映射类型的字段,还有一些设置。例如,每个索引有一个成为refresh_interval的设置,定义了新近索引的文档对于搜索可见的时间间隔。从性能的角度来看,刷新操作的代价是非常昂贵的,这也是为什么更新只是偶尔进行。

    一个具体到索引的设置是分片的数量。索引是由一个或多个成为分片的数据块组成。

    二、理解物理设计 节点和分片

    一个节点是一个运行的Elasticsearch进程。一个主分片是一块索引。一个副本分片是一份主分片的副本。

    当索引一篇文档时发生了什么?

    默认情况下,当索引一篇文档的时候,系统首先根据文档ID的散列值选择一个主分片,并将文档发送到主分片。这份主分片可能位于另一个节点。然后文档被发送到该主分片的所有副本分片进行索引。这使得副本分片和主分片之间保持数据的同步。数据同步使得副本分片可以服务于搜索请求,并在原有主分片无法访问时自动升级为主分片。

    理解主分片和副本分片

    一份分片是Lucene的索引:一个包含倒排索引的文件目录。ElasticSearch索引被分解为多块:分片。一份分片是一个Lucene的索引,所以一个ElasticSearch的索引由多个Lucene的索引组成。

    如何扩展Elasticsearch集群?

    1.向集群中添加节点,现有的分片将在所有的节点中进行负载均衡,这种方式成为水平扩展。

    2.为ElasticSearch节点增加更多硬件资源,这种方式成为垂直扩展

    分布式索引和搜索

    接受索引请求的ElasticSearch节点首先选择文档索引到哪个分片。默认地,文档在分片中均匀分布:对于每篇文档,分片是通过其ID字符串的散列决定的。每份分片拥有相同的散列范围,接收新文档的机会相等。一旦目标分片确定,接受请求的节点将文档转发到该分片所在的节点。随后,索引操作在所有目标分片的所有副本分片中进行,在所有可用副本分片完成文档的索引后,索引命令就会成功返回。

    在搜索的时候,接受请求的节点将请求转发到一组包含所有数据的分片。Elasticsearch使用round-robin的轮询机制选择可用的分片(主分片或副本分片),并将搜索请求转发过去。

    三、索引新数据

    四、搜索并获取数据

    五、配置Elasticsearch

    Elasticsearch使用的大部分内存称为“堆”。默认的操作设置让Elasticsearch为堆分配了26MB的初始内存,然后最多扩展到1GB。如果搜索和索引操作需要多余1GB的内存,那些操作将会失败,而且在日志中会发现超出内存错误。

    相关文章

      网友评论

          本文标题:Elasticsearch实战 深入功能

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