ES数据库入门

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: ES数据库入门

常见的五种数据库为:redis、mysql、ES、hbase、hive。其中的es是一种容纳较大规模并且交互性好的数据库,还是一个分布式文档数据库,其中每个字段都可被索引,而且每个字段的数据都可以被搜索到,可以在短时间内存储、搜索和分析大量的数据。

1、ES数据库的简介

es数据库的英文全称为ElsticSearch,是位于Elastic Stack核心的分布式搜索和分析引擎。是一个由Apache开源的高扩展、全文检索和分析引擎(NoSQL数据库功能)的系统,它可以准实地快速存储、搜索、分析海量的数据。

全文检索:全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引。指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找到的结果反馈给用户的检索方式。这个过程如同通过字典中的检索字表查询字的过程,全文搜索是搜索引擎数据库中的数据。

2、ES数据库的特点

① 基于java/lucene构建,支持实时搜索

② 分布式部署,可横向集群扩展

③ 支持百万级数据

④ 支持多条件查询,如聚合查询

⑤ 高可用,数据开源进行切片备份

⑥ 支持Restful风格的api调用

3、ES的应用场景

① 监控。对日志类数据进行存储、分析、可视化。对日志数据,ES给出了ELK的解决方案。其中logstash采集日志,ES进行复杂的数据分析,转换你的日志,并将他们存储在es中,kibana进行可视化展示。

② 线上商城系统,用户需要搜素购物系统网站上的商品信息。es可以存储所有的商品信息和一些库存信息,用户通过搜索引擎可以查询到自己需要的商品信息。

③ json文档数据库。用于存放java格式的文档。

④ 提供全文搜素并高亮关键字。

4、ES数据库和关系型数据库的比较

关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)

Elasticsearch ⇒ 索引(Index) ⇒ 类型(type) ⇒ 文档(Docments) ⇒ 字段(Fields)

ES 关系型数据库
索引(index) 数据库(DataBase)
类型(Type) 表(Table)
映射(Mapping) 表结构(Schema)
文档(Document) 行(ROw)
字段(Field) 列(Column)
反向索引 正向索引
DSL查询 SQL查询

Segment:段,Lucence中存储时按段来进行存储,每个段相当于一个数据集。

Commit Point:提交点,记录着Lucence中所有段的集合。

Lucence Index:Lucene索引,由一堆Segment段集合和commit point组成。

Lucene:Apache开源的全文检索开发工具包,就是一个java的jar包。

redis mysql elasticsearch hbase hadoop/hive
容量/容量扩展 较大 海量 海量
查询时效性 极高 中等 较高 中等
查询灵活性 较差(k-v模式) 非常好,支持sql 较好,关联查询较差,但可以全文检索,DSL语言可以处理过滤、匹配、排序、聚合等各种操作 较差,主要靠rowkey,scan的性能不行,或建立二集索引 非常好,支持sql
写入速度 极快 中等 较快 较快
一致性、事务
  • ① 关系型数据库中的数据库(DataBase),等价于ES中的索引(Index)
  • ② 一个数据库下面有N张表(Table),等价于1个索引Index下面有N多类型(Type)
  • ③ 一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。
  • ④ 在一个关系型数据库里面,schema定义了表、每个表的字段,还有表和字段之间的关系。 与之对应的,在ES中:Mapping定义索引下的Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理、如何进行分词处理等。
  • ⑤ 在数据库中的增insert、删delete、改update、查search操作等价于ES中的增PUT/POST、删Delete、改_update、查GET。

5、ES的工作原理

5.1、lucence存储和检索

lucence的存储和查询过程主要是:

存储过程:

  • ① 存储文档经过词法分析得到一系列的词(Term)
  • ② 通过一系列词来创建形成词典和反向索引表
  • ③ 将索引进行存储并写入硬盘。

查询过程:

  • ① 用户输入查询语句。
  • ② 对查询语句经过词法分析得到一系列词(Term) 。
  • ③ 通过语法分析得到一个查询树。
  • ④ 通过索引存储将索引读入到内存。
  • ⑤ 利用查询树搜索索引,从而得到每个词(Term) 的文档链表,对文档链表进行交、差、并得到结果文档。
  • ⑥ 将搜索到的结果文档对查询的相关性进行排序。
  • ⑦ 返回查询结果给用户。

5.2 、ES写数据

ES写数据分别是写入一个新的文档和在原有文档的基础上进行数据的追加(覆盖原有的文档)。两者基本上没有什么区别,后者是把原来的文档进行删除,再重新写入。

ES写数据流程:

(1)  客户端选择一个ES节点发送写请求,ES节点接收请求变为协调节点。

(2)  协调节点判断写请求中如果没有指定文档id,则自动生成一个doc_id。协调节点对doc_id进行哈希取值,判断出文档应存储在哪个切片中。协调节点找到存储切片的对应节点位置,将请求转发给对应的node节点。

(3)  Node节点的primary shard处理请求,并将数据同步到replica shard

(4)  协调节点发现所有的primary shard和所有的replica shard都处理完之后,就返回结果给客户端。

5.3、 ES读数据

ES读数据是通过doc_id来进行查询,先根据doc_id判断出文档存储在哪个切片上,再从切片上把数据读取过来。

ES读数据流程:

① 客户端给任意一个节点发送请求,该节点变为协调节点

② 协调节点根据doc_id,进行哈希取值,判断出文档存储在哪个切片上。

③ 协调节点将请求转发到对应的节点上,然后使用随机轮询算法(round-robin),在切片和副本切片中随机选择一个,以使读请求负载均衡

④ 接收请求的节点返回文档数据给协调节点,协调节点再返回数据给客户端。

5.4、 ES检索关键词

ES检索关键词流程:

ES检索关键词是ES最常使用的做法,通过关键词,将包含关键词的文档全部搜索出来。

①  客户端向任意一个节点发送请求,该节点变为协调节点

②  协调节点将搜索请求转到所有的shard上

③ 每个shard将自身的检索结果(搜索到的doc_id和分数),返回给协调节点。

④  协调节点根据检索结果进行相关性排序,产出最终的结果。再把doc_id发送给各个节点,拉取文档数据,最终返回给客户端。

5.5、 ES删数据

删除操作,是在commit 的时候会生成一个.del文件,里面将doc标识为deleted状态,搜索的时候根据.del文件就知道这个 doc 是否被删除了。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
存储 数据处理 数据库
深入了解达梦数据库的增删查改操作:从入门到精通
深入了解达梦数据库的增删查改操作:从入门到精通
|
2月前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之DataWorks目前支持ES数据库的分表同步如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
63 1
|
22天前
|
NoSQL 关系型数据库 MySQL
|
22天前
|
存储 JSON NoSQL
【文档数据库】ES和MongoDB的对比
【文档数据库】ES和MongoDB的对比
148 1
|
24天前
|
SQL 存储 安全
SQL入门与进阶:数据库查询与管理的实用指南
一、引言 在数字化时代,数据库已经成为各行各业存储、管理和分析数据的关键基础设施
|
8天前
|
SQL 缓存 Java
必知的技术知识:hsql数据库使用详解(入门)及快速使用
必知的技术知识:hsql数据库使用详解(入门)及快速使用
14 0
|
1月前
|
Java 数据库连接 数据库
Spring日志完结篇,MyBatis操作数据库(入门)
Spring日志完结篇,MyBatis操作数据库(入门)
|
9天前
|
关系型数据库 MySQL 数据库
轻松入门:使用Docker安装MySQL数据库的完全指南
轻松入门:使用Docker安装MySQL数据库的完全指南
|
14天前
|
SQL 关系型数据库 MySQL
MySQL数据库数据模型概念入门及基础的SQL语句2024
MySQL数据库数据模型概念入门及基础的SQL语句2024
18 0
|
2月前
|
数据库 Android开发
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画