第三章 Elasticsearch简介

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 第三章 Elasticsearch简介

1、什么是Elasticsearch

58fb06f530944802b8d508a7c2d0f2fd.jpg


1.1 官方定义

Elasticsearch(后称为 ES )是一个天生支持分布式的搜索、聚合分析和存储引擎。


1.2 民间叫法

  • 搜索引擎
  • 全文检索引擎
  • 分布式文档系统
  • 分布式数据库
  • OLAP系统
  • 分布式搜索中间件


不要去死背概念,概念应该作为一种辅助的手段帮助我们去理解一项技术或知识,总之,等你真正会用了,你就知道它是一个啥玩意儿了。


1.3 Elastic Stack(ELK Stack)        微信截图_20221119082929.png                        


2、特点

  • 开源、免费:基于Apache License 2.0开源协议,并且完全免费。
  • 基于Java语言:Elasticsearch基于Java语言开发,运行在Jvm环境中。
  • 基于Lucene框架:基于开源的Apache Lucene框架开发。
  • 原生分布式:不依赖与Zookeeper,自带分布式解决方案。
  • 高性能:支持海量数据的全文检索。支持PB级数据秒内响应!对于ES来说,上亿级别数据只不过是起点!性能几乎没有上限,足以满足各种对性能要求极高的场景。
  • 可伸缩:弹性搜索,可根据不同规模服务对性能需要的不同而动态扩展或收缩性能。既可以基于自己的笔记本电脑部署,也可以在承载了 PB 级数据的成百上千台服务器上运行
  • 易扩展:支持非常方便的横向扩展集群。
  • 开箱即用:对于小公司,解压后零配置启动服务即可立即使用,门槛极低
  • 跨编程语言:支持Java、Golang、Python、C#、PHP等多种变成语言,几乎所有语言开发者都可以使用Elasticsearch。


3、应用场景

3.1 为何要学习ES

微信截图_20221119083023.png


3.2 应用场景广泛

众所周知!几乎没有一款软件是没有搜索功能的。而毫不客气的说,只要是用到搜索的场景,ES几乎都可以说是最好的选择。

微信截图_20221119083048.png


3.3 起步薪资高

搜索相关的岗位,包括不仅限于如 “搜索算法工程师”、“搜索排序优化”、“搜索引擎架构师”、“ELK日志系统组件开发”、“搜索推荐工程师”等。

8023ba7c96f84f9d9ea11f7f6571b1ef.jpg

43cae56654614d28b30bb70e5599b057.jpg

35c705a8a5a348ae8e3e9bf09d02f3d7.jpg

ee723c3a341642c39c753ca698dba467.jpg

b32263f7a2634c8490b072eb57936473.jpg


4、常见指标速记

4.1 ES支持的搜索类型

  • 结构化搜索
  • 非结构化搜索
  • 文本搜索
  • 地理位置搜索

这里相关的面试题有:ES支持哪些类型的查询

推荐阅读2022最新ES面试题整理


4.2 擅长与不擅长

ES 最擅长从海量数据中检索少量相关数据,但不擅长单次查询大量数据(大单页)


4.3 写入实时性

ES是OLAP系统,侧重于海量数据的检索,而写入实时性并不是很高,默认1秒,也就是ES缓冲区Buffer的刷新间隔时间,不了解Elasticsearch写入原理的同学可以暂时忽略。ES并非忽略了对写入性能的优化,而是“有意为之”,其原因就在于基于 ES 的写入机制,其写入实时性和大数据检索性能是一个二选一的行为。实际上生产环境中我们经常通过“牺牲写入实时性”的操作来换取更高更快的“数据检索”性能。


4.4 不支持事务

正因为ES的写入实时性并不高,如果我们需要快速响应用户请求,我们常采取的手段就是使用缓存,但是在很多高并发的场景下,我们需要数据保持强一致性(如银行系统),因此需要使用具有ACID特性的数据库来支持,而MySQL就是一个比较好的选择。


4.5 极限的性能

彪悍!快到无与伦比,快到不可思议!

PB(1PB = 1024TB = 1024²GB)级数据秒内响应。

经常有同学问,老师我们公司集群几百万条数据,ES查询很慢,是不是达到瓶颈了。我只能告诉你,学完这套课程,你的问题不攻自破。以“亿”为单位的数据量对 ES 来说都只是起点,远远谈不上瓶颈。


4.6 看看大家喜闻乐见的排行榜

以下是权威评测机构对主流数据库(Search-Engines类目)的排行,ES 常年霸榜

https://db-engines.com/en/ranking/search+engine

df3a6203cd4d4599a0f2d6a0a8937039.jpg


5、选型

如果不是工作需要,无脑选 ES

Elasticsearch Solr MongoDB MySQL
DB类型 搜索引擎 搜索引擎 文档数据库 关系型数据库
基于何种框架开发 Lucene Lucene
基于何种开发语言 Java Java C++ C、C++
数据结构 FST、Hash等 B+ Trees
数据格式 Json Json/XML/CSV Json Row
分布式支持 原生支持 支持 原生支持 不支持
数据分区方案 分片 分片 分片 分库分表
业务系统类型 OLAP OLAP OLTP OLTP
事务支持 不支持 不支持 多文档ACID事务 支持
数据量级 PB级 TB级~PB级 PB级 单库3000万
一致性策略 最终一致性 最终一致性 最终一致性即时一致性 即时一致性
擅长领域 海量数据全文检索大数据聚合分析 大数据全文检索 海量数据CRUD 强一致性ACID事务
劣势 不支持事务写入实时性低 海量数据的性能不如ES随着数据量的不断增大,稳定性低于ES 弱事务支持不支持join查询 大数据全文搜索性能低
查询性能 ★★★★★ ★★★★ ★★★★★ ★★★
写入性能 ★★ ★★ ★★★★ ★★★


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6月前
|
Web App开发 自然语言处理 Java
Elasticsearch简介及安装
Elasticsearch简介及安装
222 0
|
5月前
|
存储 数据可视化 搜索推荐
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
57 0
|
3月前
|
存储 自然语言处理 Java
Elasticsearch全文搜索技术之二kibana的简介和使用
Elasticsearch全文搜索技术之二kibana的简介和使用
28 2
|
3月前
|
存储 自然语言处理 数据挖掘
01_Elasticsearch简介与环境搭建
01_Elasticsearch简介与环境搭建
46 0
|
8月前
|
自然语言处理 Rust 搜索推荐
elasticsearch简介
elasticsearch简介
59 0
|
5月前
|
关系型数据库 MySQL Docker
ElasticSearch简介
ElasticSearch简介
|
6月前
|
存储 消息中间件 监控
【ElasticSearch】ELK简介
【ElasticSearch】ELK简介
89 2
【ElasticSearch】ELK简介
|
9月前
|
存储 机器学习/深度学习 SQL
阿里云 Elasticsearch简介和购买流程
开源Elasticsearch是一个基于Lucene的实时分布式的搜索与分析引擎,是遵从Apache开源条款的一款开源产品,是当前主流的企业级搜索引擎。作为一款基于RESTful API的分布式服务,Elasticsearch可以快速地、近乎于准实时地存储、查询和分析超大数据集,通常被用来作为构建复杂查询特性和需求强大应用的基础引擎或技术。
|
10月前
|
存储 自然语言处理 前端开发
Elasticsearch倒排索引(一)简介
Elasticsearch倒排索引(一)简介
84 0
|
12月前
|
存储 自然语言处理 Java

热门文章

最新文章