Please enable Javascript to view the contents

分布式搜索和分析的利器:ElasticSearch简介

 ·  ☕ 2 分钟  ·  🪶 VictorHong · 👀... 阅读

什么是Elasticsearch?

ES的全称是ElasticSearch(下面简称ES),是一个分布式、高扩展、近实时的搜索与数据分析引擎(底层基于Apache Lucene)。Elasticsearch 为各种数据类型提供接近实时的搜索和分析,不论你有结构化或非结构化的文本、数字数据,还是地理空间数据,Elasticsearch 都可以支持快速搜索的方式高效地存储和索引它。你可以远超简单数据检索和聚合信息的方式去发现你数据中的趋势和模式。而且,随着你数据和查询量的增长,Elasticsearch 分布式的特性允许你的部署能随着它无缝地增长。(参考:ES官方文档-ES介绍

ES作为一种非关系型数据库,他和传统的关系型数据库有什么区别呢?

  • 底层的数据结构不同,ES使用倒排索引,而MySQL使用B+树
  • MySQL支持事务,ES不支持事务,可以这么认为,MySQL更加适合OLTP,ES更适合OLAP
  • MYSQL是单机的,ES是分布式的,支持水平拓展以及高可用的特性
  • MySQL支持多表关联,ES多表关联有限
  • ES拥有灵活的数据类型,能创建更多的索引(默认都是索引)。

Elasticsearch的使用场景

ES常见的使用场景如下:

ES使用场景


常见的搜索引擎以及电商搜索的场景,多是以模糊查询和多字段查询为主,如:百科搜索(百度百科、维基百科)、论坛博客(CSDN、简书、掘金、Stack Overflow)、电商网站(京东、淘宝、拼多多)

搜索


在进行服务系统管理的时候,监控日志或者对日志进行分析,这些数据量比较大的处理,也能用ES来进行处理:

日志监控


BI系统进行数据分析,ES也能作为一种数据分析的工具,尤其是在大数据分析的场景下:

image-20230225110540712


数据异构和宽表构建主要是利用了ES可以处理很多结构化或者非结构化数据的特性,对一些原来的数据结构进行处理,例如MySQL的多表关联比较慢,可以对多个表进行组合成一张表,写入ES中,然后使用ES中的宽表进行查询,这样查询就能够比较快。并且ES中不会因为字段的个数上升而出现性能问题。

数据异构


Reference:


VictorHong
作者
VictorHong
📚Learner🤓Nerd🌐Developer 努力做有价值的事情