Elasticsearch基本入门

 

ES核心概念

目录

ES核心概念

1、字段(Fields)

2、文档(Documents)

3、映射(Mapping)

4、索引(Index)


1、字段(Fields)

字段是ES中最小的独立单元数据,每一个字段有自己的数据类型(可以自己定义覆盖ES自动设置的数据类型),我们还可以对单个字段设置是否分析、分词器等等。

核心的数据类型有string、Numeric、DateDate、Boolean、Binary、Range等等,复杂类型有Object、Nested。

 

2、文档(Documents)

在ES中文档的概念相当于RDBMS中的一行数据,不同的是在ES中文档的存储是直接使用json格式存储的(也就是可以嵌套),而不是像RDBMS中把数据"压平"了存储,这一点也是nosql和关系型数据库比较大的区别。

下面是一个文档的例子

{
   "_id": 3,
   “_type”: [“your index type”],
   “_index”: [“your index name”],
   "_source":{
   "age": 28,
   "name": ["daniel”],
   "year":1989,
   }
}

3、映射(Mapping)

”Mapping is the process of defining how a document, and the fields it contains, are stored and indexed.“

也就是Mapping是定义文档和字段如何存储和索引,使用Mapping可以定义下面这些信息

  • 哪些字段应该作为全文索引
  • 哪些字段包括numbers, dates, geolocations.
  • 时间类型的格式
  • 定义规则控制动态增加字段的mapping

4、索引(Index)

在ES中是最大的数据存储概念,它是由许多具有相同特征的文档组成的一个集合。 由于在ES7.0之后逐渐废除Type类型,所以Index从”数据库“的概念变成了实际上的”“概念,我们可以把它近似地当成RDBMS中的表,但是要注意Index只是一个逻辑上的概念,真实的数据是分开存储在各个分片中的。

 

和关系型数据库的类比

 

一个Elasticsearch集群会有多个Elasticsearch节点,所谓节点实际上就是运行着Elasticsearch进程的机器。在众多的节点中,其中会有一个Master Node,它主要负责维护索引元数据、负责切换主分片和副本分片身份等工作(后面会讲到分片的概念),如果主节点挂了,会选举出一个新的主节点。

从上面我们也已经得知,Elasticsearch最外层的是Index(相当于数据库 表的概念);一个Index的数据我们可以分发到不同的Node上进行存储,这个操作就叫做分片

比如现在我集群里边有4个节点,我现在有一个Index,想将这个Index在4个节点上存储,那我们可以设置为4个分片。这4个分片的数据合起来就是Index的数据

为什么要分片?原因也很简单:

  • 如果一个Index的数据量太大,只有一个分片,那只会在一个节点上存储,随着数据量的增长,一个节点未必能把一个Index存储下来。
  • 多个分片,在写入或查询的时候就可以并行操作(从各个节点中读写数据,提高吞吐量)

现在问题来了,如果某个节点挂了,那部分数据就丢了吗?显然Elasticsearch也会想到这个问题,所以分片会有主分片和副本分片之分(为了实现高可用

数据写入的时候是写到主分片,副本分片会复制主分片的数据,读取的时候主分片和副本分片都可以读

如果某个节点挂了,前面所提高的Master Node就会把对应的副本分片提拔为主分片,这样即便节点挂了,数据就不会丢。

到这里我们可以简单总结一下Elasticsearch的架构了:

おすすめ

転載: blog.csdn.net/yjh6688/article/details/113938207