Elasticsearch学习分享(四)

        上篇学习了Kibana,本期深入学习ES,包括ES是如何存储数据,其数据结构又是怎样的,以及与传统数据库的关系。

        ES有很多重要概念,包括如集群、节点、索引、文档、分片、映射等内容。相比于关系数据库中的数据库、表、行(记录)、属性(字段、特征)等核心概念,ES有索引(indices)、类型(types)、文档(Documents)、fields等内容。ES是面向文档的,下面是关系数据库与Elasticsearch客观的对应关系!

Relational DBElasticsearch
数据库(database)索引(indices)
表(tables)类型(types)
行(rows)文档(documents)
字段(columns)fields

elasticsearch(集群) 中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型又包含多个文档(行),每个文档又包含fields(字段/列)。

物理设计:

elasticsearch在后台把每个索引划分成多个分片,每个分片可以在集群中的不同服务器之间迁移。

一个人就是一个集群,默认的集群名称就是elasticsearch,如图:

逻辑设计:

一个索引类型中,包含多个文档。当检索一篇文档时,可以通过这样的顺序来查找:<索引>/<类型>/<文档id>,通过这样的组合,就可以找到具体的文档。注意:id不一定是整数,实际上它是个字符串。

下面深入理解elasticsearch的相关名词:

文档:

        既然elasticsearch是面向文档的,那么意味着索引和搜索数据的最小单位就是文档,它有以下几个重要特点:

  • 自我包含,一篇文档同时包含字段和对应的值,也就是同时包含key:value
  • 可以是层次型的,一个文档中包含子文档(就是一个json对象)
  • 灵活的结构,文档不依赖预先自定义的模式。在关系数据库中,要提前定义字段才能使用;而在es中,对于字段是非常灵活的,有时候,我们可以忽略该字段,或者动态添加一个新的字段。

类型:

        类型是文档的逻辑容器,就像关系数据库一样,表格是行的容器。类型中对于字段的定义称为映射(mapping),比如字段(属性)name映射为字符串类型。文档是无模式的,它们不需要拥有映射中所定义的所有字段,比如新增一个字段,那么es是怎么做的呢?es会自动的将新字段加入映射,但是这个字段不确定它是什么类型,es就开始猜,如果这个值是18,那么es会认为它是整型。但是,es也可能猜不对,所以最安全的方式就是提前定义好所需要的映射,这点跟关系数据库殊途同归,即先定义好字段,然后再使用。

索引:

        索引是映射类型的容器,就是数据库。es中的索引是一个非常大的文档集合。索引存储了映射类型的字段和其他设置,然后它们被存储在了各个分片上了。

那么分片如何工作呢?

        一个集群至少包含一个节点,而这个节点就是一个es进程。节点可以有多个索引来默认。如果创建索引,那么默认索引就会有5个分片,如图:

        本期总结并深入理解了es的相关概念名词,下期将学习一个新的比较有意思的内容——IK分词器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSAIWQYB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值