读《ElasticSearch技术解析与实战》笔记(一)基本概念

坚持读书的开始!!!

  • 垂直扩展/水平扩展:
    可以通过购置性能更强的服务器来完成,称为垂直扩展或者向上扩展(Vertical Scale/Scaling Up),或增加更多的服务器来完成,称为水平扩展或者向外扩展(Horizontal Scale/Scaling Out)
    提升服务器的性能具有局限性,多从水平扩展考虑。
  • 分片机制提供更好的分布性:同一个索引分成多个分片(sharding),这点类似于HDFS的块机制;分而治之的方式可提升处理效率。分片建立倒排索引
  • Elasticsearch术语及概念:
    • term(索引词): 能够被索引,并通过term查询进行精准搜索的一个精确值; 区分大小写,不同大小写是两个索引词。
    • analysis(分析):分析是将被索引的文本转换为索引词(term)的过程,依赖于分词器。
      比如:FOO BAR、Foo-Bar和foo bar这几个单词有可能会被分析成相同的索引词foo和bar,这些索引词存储在Elasticsearch的索引库中。
    • 集群:集群由一个或者多个节点组成,对外提供索引和搜索功能、提供服务。节点的集群名称相同时,这些节点被加入到同一个集群中。
    • **节点(node)**一个节点是一个逻辑上独立的服务,它是集群的一部分,可以存储数据,并参与集群的索引和搜索功能。就像集群一样,节点也有唯一的名字,在启动的时候分配。如果你不想要默认名称,你可以定义任何你想要的节点名。这个名字在管理中很重要,在网络中Elasticsearch集群通过节点名称进行管理和通信。一个节点可以被配置加入一个特定的集群。默认情况下,每个节点会加入名为Elasticsearch的集群中,这意味着如果你在网络上启动多个节点,如果网络畅通,他们能彼此发现并自动加入一个名为Elasticsearch的集群中。在一个集群中,你可以拥有多个你想要的节点。当网络没有集群运行的时候,只要启动任何一个节点,这个节点会默认生成一个新的集群,这个集群会有一个节点。
    • **路由(routing)**当存储一个文档的时候,**它会存储在唯一的主分片中,具体哪个分片是通过散列值进行选择。**默认情况下,这个值是由文档的ID生成。如果文档有一个指定的父文档,则从父文档ID中生成,该值可以在存储文档的时候进行修改。
    • **分片(shard)**分片是单个Lucene(倒排索引)实例, 这是Elasticsearch管理的比较底层的功能。索引是指向主分片和副本分片的逻辑空间。对于使用,只需要指定分片的数量,其他不需要做过多的事情。在开发使用的过程中,我们对应的对象都是索引,Elasticsearch会自动管理集群中所有的分片,当发生故障的时候,Elasticsearch会把分片移动到不同的节点或者添加新的节点。一个索引可以存储很大的数据,这些空间可以超过一个节点的物理存储的限制。例如,十亿个文档占用磁盘空间为1TB。仅从单个节点搜索可能会很慢,还有一台物理机器也不一定能存储这么多的数据。为了解决这一问题,Elasticsearch将索引分解成多个分片。当你创建一个索引,你可以简单地定义你想要的分片数量。每个分片本身是一个全功能的、独立的单元,可以托管在集群中的任何节点
      (我的总结: 每个索引 分而治之进行分片,可以分散存储在不同的设备上《==》不同的分片天涯海角但还是一家人;不同的分片,即索引的每一部分数据都需要用倒排索引管理起来,即 分片是单个的Lucene实例)
    • 主分片(primary shard):每个文档都存储在一个分片中,当你存储一个文档的时候,系统会首先存储在主分片中,然后会复制到不同的副本中。默认情况下,一个索引有5个主分片。你可以事先制定分片的数量,当分片一旦建立,则分片的数量不能修改
    • **副本分片(replica shard)**每一个分片有零个或多个副本。副本主要是主分片的复制,其中有两个目的:□增加高可用性:当主分片失败的时候,可以从副本分片中选择一个作为主分片。□提高性能:当查询的时候可以到主分片或者副本分片中进行查询。默认情况下,一个主分片配有一个副本,但副本的数量可以在后面动态地配置增加。副本分片必须部署在不同的节点上,不能部署在和主分片相同的节点上。分片主要有两个很重要的原因是:
      □允许水平分割扩展数据。
      □允许分配和并行操作(可能在多个节点上)从而提高性能和吞吐量。
    • 副本和复制
      • 1、它提供了高可用性,当节点失败的时候不受影响。一个复制的分片不会存储在同一个节点中
      • 2、搜索可以在所有的副本上并行执行,扩展搜索量提高并发量。
      • 3、副本分片可以改变数目,主分片不能。
      • 4、默认一个索引5个分片、每个分片1个副本; 分片和副本不能存储在同一个节点上,所以默认集群至少两个节点。
    • 映射(mapping): 每个索引一个映射,定义了索引中每个字段的类型,以及一个索引范围内的设置 (没懂);映射可以被事先定义,或者在第一次存储文档时自动识别(这个好厉害可以自动识别)
    • **来源字段(source field)**默认情况下,你的原文档将被存储在_source这个字段中,当你查询的时候也是返回这个字段。这允许你可以从搜索结果中访问原始的对象,这个对象返回一个精确的JSON字符串,这个对象不显示索引分析后的其他任何数据。
  • List item

你可能感兴趣的:(笔记)