ElasticSearch的核心概念简单描述

我正在参加「掘金·启航计划」

ES核心概念

ES是面向文档,下面表格是和关系型数据库的对比,一切都是JSON

关系数据库(Mysql) ES
数据库(database) 索引(indices) 和数据库一样
表(tables) types 慢慢会被弃用 7.0已经过时 8.0会彻底废弃
行(rows) documents (数据)文档
字段(columns) fields

ES中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型下又包含多个文档(行),每个文档中又包含多个字段(列)

物理设计:

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

ES一个人就是一个集群,默认的集群名叫elasticsearch

逻辑设计:

一个索引类型中,包含多个文档

文档(表)

ES是面向文档的,那么就意味着索引和搜索数据的最小单位是文档,ES中,文档有几个重要属性:

1 自我包含 一篇文档同时包含字段和对应的值,也就是同时包含key:value
2 可以是层次的,一个文档中包含自文档,复杂的逻辑实体就是这么来的(其实就是一个JSON对象 Java中可以通过fastjson或者jackson自动进行转换)
3 灵活的结构,文档不依赖预先定义的模式,我们知道关系型数据库中,要提前定义字段才能用,在ES中,对于字段是非常灵活的,有时候,我们可以忽略该字段,或者动态的添加一个新字段

类型(字段属性类型 name varchar,name int之类的 )

类型是文档的逻辑容器,就像关系数据库一样,表格是行的容器,类型中对于字段的定义称为映射,在ES中,类型可以不定义设置,ES会去猜测数据类型,有可能出错,当然收到设置数据类型是最安全的

索引(数据库)

索引就是数据库,索引被分为5个分片,5个分片就是5个倒排索引,一个ES索引是由多个Lucenne库组成的
索引是映射类型的容器,ES中的索引是一个非常大的文档集合,索引存储了映射类型的字段和其他设置,然后他们被存储到了各个分支上,下面研究下分片是如何工作的

倒排索引

ES使用的是一种称为倒排索引的结构,采用Lucenne倒排索引作为底层,这种结构适用于快速的全文索引,一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含它的文档列表

比如现在有两个文档

如果要搜索 to forever,由于文档1的权重(score )更高,所以优先考虑文档1,百度也是这样的机制

在看一个例子,倒排索引会过滤掉全部和查询无关的数据,效率更加高

总结其实就以下几个核心概念

1 索引
2 字段类型(mapping)
3 文档(documents)
4 分片(倒排索引)

猜你喜欢

转载自blog.csdn.net/weixin_46713508/article/details/131366899
今日推荐