ElasticSerach核心概念(三更)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: ElasticSerach核心概念(三更)

正文


ES核心概念


概述


在前两更中已经讲了es是什么,如何安装和启动,那么es到底是怎么去存储数据的呢?又是如何搜索的效率如此之高呢?带着问题来学习!


集群、节点、索引、类型、分片、映射到底是什么?


首先了解es和关系型数据库的对比!JSON!


DB ES
数据库(database) 索引(indices)
表(tables) types
行(row) documents
字段(rows) fields


上述分析


索引(indices):相当于db中的数据库

types:相当于DB中的表但是7.X版本后会被慢慢弃用8.X将彻底弃用!这里做个了解即可

documents:相当于DB中的行也就是数据

fields:相当于DB中的字段 这很好理解 在ES中作用相似 是documents的字段(例如 id,name,age)


es集群概念


es后台把每个索引都分为多个分片,每个分片在不同的服务器上迁移

所以es启动就是一个集群!因为默认开启就会进行分片,只是如果只搭了一台服务器看不出来而已!

什么是分布式,启动就是集群!

在浏览器输入:http://127.0.0.1:9200

20200929222938441.png


什么是 索引,文档,类型


索引:因为es全部都是json格式存储的,可以把索引理解为一个非常大的集合,而集合内装的每一个对象则是documents文档,文档中则是使用很多不同类型的feilds存储的!然后被存入各个分片上。

文档:在一更中说过 es是面向文档的!那就意味着文档是索引和搜索的最小单位!文档有几个重要的属性。


  1. 自我包含,一个文档同时包含字段和对应的值,也就是同时包含key,value 例如我要搜索name=zhangsan的数据,那么就能把对应的value获取出来。
  2. 层次型,一个文档里可以包含自我文档,复杂的逻辑实体就是这么来的!{就是一个json,到后面使用springboot测试的时候可以使用fastjson,它能够帮助我们自动生成索引!}
  3. 灵活的结构,我们都知道在关系型数据库中的表结构必须预定设置类型,而使用es操作文档时则是非常灵活的,有时候我们可以忽略某个字段或者动态的新增一个新字段!可以理解为 文档就是一条条的数据!


类型:在文档中是可以像关系型数据库一样设置类型的,例如DB中的varchar->对应es string,keyword,DB中date->es date 等等!使用es时最安全的方式就是预先设置字段类型,这就跟关系型数据库有点殊途同归了, 另外如果在一个文档中没有设置类型 那么es则会自动识别注入类型(有几率与我们预想的类型不同)。


节点和分片


一个集群至少有一个节点,而这个节点就是我们的elasticSerach进程,节点可以由多个索引默认的,如果创建索引那么将会有默认五个分片(primary shard,又称主分片)构成的,每一个分片将会有一个副本(replica shard,又称复制分片)用白话说就是 我们创建的索引不止有一个地方可以存 默认存了五分 我们可以通过分片把他们搭在不同的集群上(索引的默认分片数量可以在kinbana中设置模板引擎自定义数量)

20200929234932595.png

上图是一个有三个节点的集群,可以看到三个主分片和对应的复制分片都不会在同一个节点上,这样有利于当某个节点挂了,数据也不会丢失。


实际上一个分片就是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结构使es不用全盘扫描全部文档的情况下就能告诉你哪些文档包含特定的关键字,等等!!!!倒排索引是个什么鬼?????

然而倒排索引是es的重中之重,搜索为何如此之快的关键所在!!!

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
8月前
|
Python
面向对象编程:核心概念与实践
面向对象编程:核心概念与实践
116 0
|
存储 缓存 JavaScript
深入浅出 RxJS 核心原理(响应式编程篇)
在最近的项目中,我们面临了一个需求:监听异步数据的更新,并及时通知相关的组件模块进行相应的处理。传统的事件监听和回调函数方式可能无法满足我们的需求,因此决定采用响应式编程的方法来解决这个问题。在实现过程中发现 RxJS 这个响应式编程库,可以很高效、可维护地实现数据的监听和组件通知。
382 0
深入浅出 RxJS 核心原理(响应式编程篇)
|
3月前
|
机器学习/深度学习 自然语言处理 算法
ChatGPT的底层核心概念
ChatGPT的底层核心概念
35 0
|
2月前
|
存储 Kubernetes 调度
K8S中的核心概念
【10月更文挑战第26天】云原生环境下的安全问题易被忽视,导致潜在风险。应用层渗透测试和漏洞扫描是检测安全的关键,尤其是对于CVE漏洞的修复。然而,常见误解认为安全由外部防护处理且不易引入问题。
|
8月前
|
存储 JSON 数据格式
2.核心概念
2.核心概念
|
8月前
|
存储 Kubernetes API
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
|
8月前
|
存储 Kubernetes 负载均衡
k8s 数据流向 与 核心概念详细介绍
k8s 数据流向 与 核心概念详细介绍
|
8月前
|
存储 C# 开发者
深入了解 C#编程的核心概念
【4月更文挑战第20天】C#是一种强大的面向对象编程语言,关键概念包括:面向对象(类、对象、继承、多态)、封装、数据类型、变量与常量、控制流、异常处理、委托和事件、泛型及集合。掌握这些概念并通过阅读代码、实践编写和学习新技巧行动,是成为熟练C#开发者的基石。了解并运用这些核心概念能提升代码效率、灵活性和可维护性。
76 3
|
存储 Kubernetes API
【k8s概念】一文搞懂k8s核心概念!!!(下)
【k8s概念】一文搞懂k8s核心概念!!!(下)
53375 8
|
存储 Kubernetes 调度
【k8s概念】一文搞懂k8s核心概念!!!(上)
【k8s概念】一文搞懂k8s核心概念!!!(上)
674 0