ElasticSerach核心概念(三更)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB MySQL 版,通用型 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
Python
面向对象编程:核心概念与实践
面向对象编程:核心概念与实践
43 0
|
2月前
|
存储 JSON 数据格式
2.核心概念
2.核心概念
|
11天前
|
存储 Kubernetes 调度
K8S中的核心概念
【6月更文挑战第25天】k8s资源对象可以用yaml或者json格式声明。每个资源对象都有自己的特定结构定义,并统一保存在etcd这种非关系型数据库中。
|
10天前
|
Java 数据库连接 Spring
Spring底层架构核心概念总结
Spring底层架构核心概念总结
|
2月前
|
存储 Kubernetes API
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
|
2月前
|
存储 Kubernetes 负载均衡
k8s 数据流向 与 核心概念详细介绍
k8s 数据流向 与 核心概念详细介绍
|
2月前
|
存储 C# 开发者
深入了解 C#编程的核心概念
【4月更文挑战第20天】C#是一种强大的面向对象编程语言,关键概念包括:面向对象(类、对象、继承、多态)、封装、数据类型、变量与常量、控制流、异常处理、委托和事件、泛型及集合。掌握这些概念并通过阅读代码、实践编写和学习新技巧行动,是成为熟练C#开发者的基石。了解并运用这些核心概念能提升代码效率、灵活性和可维护性。
|
8月前
|
XML Java 数据格式
Spring源码系列:核心概念解析
Spring框架中有许多关键组件,理解这些组件的作用和关系可以帮助我们更好地阅读和理解Spring源码。BeanDefinition是Spring中重要的概念,定义了一个Bean的基本属性和行为,是Spring容器管理Bean的基础。我们可以通过注解或编程方式定义BeanDefinition,然后将其注册到Spring容器中。BeanDefinitionReader是读取和操作BeanDefinition的重要组件。其中XmlBeanDefinitionReader可以从XML文件中读取BeanDefinition,AnnotatedBeanDefinitionReader可以解析注解并注册B
|
9月前
|
存储 Kubernetes API
【k8s概念】一文搞懂k8s核心概念!!!(下)
【k8s概念】一文搞懂k8s核心概念!!!(下)
53310 8
|
9月前
|
存储 Kubernetes 调度
【k8s概念】一文搞懂k8s核心概念!!!(上)
【k8s概念】一文搞懂k8s核心概念!!!(上)
575 0

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    27
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    27
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    27
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    28
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    25
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    31
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    22
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    20
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    21
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    20