ElasticSearch相关概念 —— ElasticSearch

Posted guancangtingbai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch相关概念 —— ElasticSearch相关的知识,希望对你有一定的参考价值。

概述

  Es是面向文档的,这意味着它可以存储整个对象或者文档。

  Es不仅仅是存储,还会索引每个文档的内容使之可以被搜索。

  在Es中,可以对文档进行索引、搜索、排序、过滤。

  Es相比传统的关系型数据库如下:

Relational DB ‐> Databases ‐> Tables ‐> Rows ‐> Columns 
Elasticsearch ‐> Indices ‐> Types ‐> Documents ‐> Fields

 

Es核心概念

索引index

  一个索引就是一个拥有几分相似特征的文档的集合。

  比如说,有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。

  一个索引由一个名字来标识(必须是小写字母),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用这个名字。

  在一个集群中,可以定义任意多的索引。

 

类型type

  在一个索引中,你可以定义一种或者多种类型。

  一个类型是索引的一个逻辑上的分类/分区,其语义完全由程序员决定。

  通常,会为具有一组共同字段的文档定义一个类型。

  比如,假设你运营一个博客平台并且将你的所有数据存储到一个索引当中。

  在这个索引当中,你可以为用户数据定义一个类型,为博客数据定义一个类型,当然,也可为评论数据定义一个类型。

 

字段Field

  在相当于是数据表的字段,对文档数据根据不同属性进行的分类标识。

 

映射mapping

  mapping是处理数据的方式和规则方面做一定的限制。

  比如某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以被设置的。

  其他就是处理Es里面数据的一些使用规则设置也叫作映射。

  按照最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好。

 

文档document

  一个文档是一个可以被索引的基础信息单元。

  在一个index/type里面,你可以存储任意多的文档。

  注意!尽管一个文档,物理上存在于一个索引当中,文档必须被索引/赋予一个索引的type。

 

接近实时NRT

  Es是一个接近实时的搜索平台。这意味着,从索引一个文档到这个能够被搜索到有一个轻微的延迟(通常在一秒以内)。

 

集群cluster

  一个集群就是由一个或者多个节点组织在一起,它们共同持有整个数据,并一起提供索引和搜索功能。

  一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。

  这个名字是很重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群。

 

节点node

  一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能。

  和集群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的漫威漫画角色的名字。

  这个名字会在启动的时候赋予给节点。

  这个名字对于管理者比较重要,因为在管理过程当中,需要确定网络中哪些服务器对应与Es集群中的哪些节点。

  一个节点可以通过配置集群名称的方式来加入一个指定的集群。

  默认情况下,所有的节点都会被安排加入到一个叫做“elasticsearch”的集群当中。

  这意味着,如果你的网络中启动了若干个节点,并假定它们能够互相发现彼此,它们会自动形成并加入到一个叫做“elasticsearch”的集群。

 

分片和复制 shards&replicas

  一个索引可以存储超出单个节点硬件限制的大量数据。比如,一个具有十亿文档的索引占据1TB磁盘空间,而任一节点都没有这样大的磁盘空间。

  或者单个节点处理搜索请求,响应太慢。

  为了解决这些问题,Es提供了将索引划分成多份的能力,这些份就叫做分片。

  当创建一个索引的时候,可以指定想要的分片数量。

  每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。

  分片很重要,主要有两方面原因:

    1.允许水平分割,扩展内存容量。

    2.允许在分片(潜在地,位于多个节点上)之上进行分布式、并行的操作,进而提高性能/吞吐量。

  在一个网络环境中,失败随时都可能发生,在某个分片/节点不知道为什么就处于离线状态,或者由于任何原因消失了。

  这种情况下,有一个故障转移机制是非常有用并且强烈推荐的。

  Es允许创建分片的一份或者多份拷贝,这些拷贝叫做复制分片,或者直接叫做复制。

  复制之所以重要,有两个原因:

    1.在分片/节点失败的情况下,提供了高可用性。

      注意复制分片从不与主要分片放置于同一节点,是非常重要的。

    2.扩展搜索量/吞吐量

      搜索可以在所有的复制上面并行运行。

  总之,每个索引就有了主分片(复制源的分片)和复制分片之别。

  分片和复制的数量可以在索引创建时指定,索引创建之后,可以任何时候动态的改变复制的数量,但是不能改变分片的数量。

  默认情况下,Es中的每个索引被分片五个主分片和一个复制分片。

  这意味着,如果集群中至少有两个节点,那么索引将会有五个主分片和另外五个复制分片,这意味着每个索引都有十个分片。

 

以上是关于ElasticSearch相关概念 —— ElasticSearch的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch系列之什么是ElasticSearch?

ElasticSearch系列之什么是ElasticSearch?

干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践

干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践

ElasticSearch相关概念 —— ElasticSearch

elasticsearch+moloch