ES数据库入门

这篇具有很好参考价值的文章主要介绍了ES数据库入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、ES数据库的简介

2、ES数据库的特点

3、ES的应用场景

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

5、ES的工作原理

5.1、lucence存储和检索

5.2 、ES写数据

5.3、 ES读数据

5.4、 ES检索关键词

5.5、 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的存储和查询过程主要是:

es数据库,elasticsearch,搜索引擎,大数据

 存储过程:

  • ① 存储文档经过词法分析得到一系列的词(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 是否被删除了。文章来源地址https://www.toymoban.com/news/detail-800279.html

到了这里,关于ES数据库入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包