Elasticsearch的认识——Elasticsearch进阶(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39819880/article/details/82142494
Elasticsearch文档数据库

传统的关系型数据库是把一个数据对象拆分放入到一个有行和列的表格中,查询的时候还必须去重建它们。
Elasticsearch是面向文档(document oriented)的,意味着它可以存储整个对象或文档。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索,可以通过对文档进行索引、搜索、排序、过滤。这种理解数据的方法与以往传统数据库完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。

Elasticsearch的基本概念

Elasticsearch把数据存储在一个或多个索引上,每个索引包含各种类型的文档。每个文档有很多字段,映射定义了Elasticsearch如何对应这些字段。

  • 索引(index):在Elasticserarch中存储数据的行为就叫做索引(indexing)。我们可以把索引(index)看成关系型数据库的表。不过,索引(index)的结构是为快速有效的全文索引准备的,它并不存储原始值。

索引名词:一个索引(index)就像是传统关系数据库中的数据库,它是相关文档存储的地方。
索引动词:【索引(indexing)一个文档】表示把一个文档存储到索引(名词)里,以便它可以被检索或查询。你可以把它当做SQL的 INSERT关键字,差别是,如果文档已经存在,新文档将覆盖旧的文档。

  • 文档(document):存储在Elasticsearch的主要实体叫文档(document),它相当于关系型数据库表中的一行记录。文档有多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫多值字段。每个字段有类型,如文本、数值、日期等。字段类型是复杂类型,一个字段包含其他子文档或数组。字段类型可以给出操作(分析、排序)如何被执行的信息。文档不像关系型那样有固定的结构,但是可以强行规定文档结构。我们在客户端图形界面看到的是文档是一个JSON对象,每个文档存储在一个索引中并有一个Elasticsearch自动生成的唯一标识符合文档类型。文档需要有对应文档类型的唯一标识符,这意味着在一个索引中,两个不同类型的文档可以有相同的唯一标识符。
  • 文档类型:不同的文档类型不能为相同的属性设置不同的类型。例如,在同一索引中的所有文档类型中,一个叫title的字段必须具有相同的类型。
  • 映射:Elasticsearch在映射中存储有关字段的信息。每一个文档类型都有自己的映射,即使我们没有定义。

以下概念是Elasticsearch设计成为能够处理数以亿计的文档和每秒数以百计的搜索请求的分布式解决方案。

  • 节点和集群:Elasticsearch可以单独的作为一个搜索服务器。但是,为了处理大型数据集,实现容错和高可用性。Elasticsearch可以运行在许多互相合作的服务器上。这些服务器称为集群(cluster),形成集群的每个服务器称为节点(node)
  • 分片 :当有大量的文档时,由于内存的限制,硬盘的能力、处理能力不足、无法足够快地响应客户端请求等,一个节点可能不够。在这种情况下,数据可分为较小的称为分片(shard)的部分(Elasticsearch会把一个索引分解为多个小的索引,每一个小的索引就叫做分片,其中每个分片都是一个独立的Apache Lucene索引)。而且每个分片可以放在不同的服务器上,因此,数据可以在集群的节点中传播。当你查询的索引分布在多个分片上时,Elasticsearch会把查询发送给每个相关的分片,并把结果合并在一起,而应用程序并不知道分片的存在,多个分片可以加快索引。
  • 副本:为了提高查询吞吐量或实现高可用性,可以使用分片副本。副本(replica)只是一个分片的精确复制,每个分片可以有零个或多个副本。Elasticsearch可以有许多相同的分片,其中之一被自动选择去更改索引操作。这种特殊的分片称为主分片(primary shard),其余称为副分片(replica shard)。在主分片丢失时,例如该分片数据所在服务器不可用,集群将副本提升为新的主分片。
  • 时光之门:Elasticsearch处理许多节点。集群的状态由时光之门控制。默认情况下,每个节点都在本地存储这些信息,并在节点中同步。

概念理解起来比较复杂,但如果我们看一个例子就知道这些概念对应的是什么意思了,进阶3走起!

猜你喜欢

转载自blog.csdn.net/weixin_39819880/article/details/82142494