Elasticsearch搜索引擎原理理解通俗易懂

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 记得小马最早期刚参加工作的时候全文索引用的是Sphinx。 当一个功能需要对表中的text varchar等文本进行like查询时,MySQL全表扫描很慢,需要Sphinx。Sphinx能解决性能和中文分词问题。

记得小马最早期刚参加工作的时候全文索引用的是Sphinx。 当一个功能需要对表中的text varchar等文本进行like查询时,MySQL全表扫描很慢,需要Sphinx。Sphinx能解决性能和中文分词问题。

Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。

使用流程:

1.PHP先把要搜索的短语发给sphinx服务器(用API发起请求),sphinx服务器返回的是记录的ID

2.PHP用sphinx返回的ID查询数据库。

Elasticsearch是啥

百科如是说:

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

小马本来想自己整理下这块东西,无意间看到一篇漫画式的文章,特别清晰而且通俗易懂,忍不住引用了,为作者的良苦用心点赞。

原文地址:终于有人把Elasticsearch原理讲透了!

倒排索引

可以通俗理解为使用文本内分词关键字建立索引,搜索时先找到标题再找到内容(百度谷歌搜索引擎原理)。
image.png

image.png

image.png

搜索引擎原理

image.png
image.png
image.png

Elasticsearch简介

image.png

image.png
image.png

ES基本概念

image.png
image.png
image.png

image.png

image.png

吕老师:之前我们说过,Elasticsearch 把操作都封装成了 HTTP 的 API,我们只要给 Elasticsearch 发送 HTTP 请求就行。

比如使用curl -XPUT 'http: //ip:port/poems',就能建立一个名为 Poems 的索引,其他操作也是类似的。

Elasticsearch 分布式原理

image.png

image.png

image.png

ELK系统

image.png
image.png

image.png

吕老师:但是如果日志接入了ELK 系统就不一样。比如系统运行过程中,突然出现了异常,在日志中就能及时反馈,日志进入 ELK 系统中,我们直接在 Kibana 就能看到日志情况。如果再接入一些实时计算模块,还能做实时报警功能。

es集群+elk搭建+kafka搭建分布式日志收集系统。

总结

反向索引又叫倒排索引,是根据文章内容中的关键字建立索引。

搜索引擎原理就是建立反向索引。

Elasticsearch 在 Lucene 的基础上进行封装,实现了分布式搜索引擎。

Elasticsearch 中的索引、类型和文档的概念比较重要,类似于 MySQL 中的数据库、表和行。

Elasticsearch 也是 Master-slave 架构,也实现了数据的分片和备份。

Elasticsearch 一个典型应用就是 ELK 日志分析系统。

Elasticsearch如何再项目中配合MySQL使用

像的处理流程上面已经介绍了,那ES怎么结合项目呢?以下的意思是直接同步DB数据,然后即可以同时支持查询考了。但应该会有更高效的协作方式,你觉得呢?
image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
5月前
|
JSON 搜索推荐 API
使用Elasticsearch进行全文搜索:技术深度解析
【5月更文挑战第16天】本文深入解析了使用Elasticsearch进行全文搜索的技术细节。Elasticsearch是一个基于Lucene的开源搜索引擎,支持全文、结构化搜索和数据分析,具备优秀的扩展性。文中介绍了其核心功能,包括全文搜索、结构化搜索、分析和可扩展性。详细步骤涉及安装配置、数据准备、创建索引、导入数据、构建查询及结果处理。Elasticsearch凭借其高效性能和灵活性,成为企业全文搜索的首选解决方案。
|
5月前
|
监控 搜索推荐 安全
面经:Elasticsearch全文搜索引擎原理与实战
【4月更文挑战第10天】本文是关于Elasticsearch面试准备的博客,重点讨论了四个核心主题:Elasticsearch的分布式架构和数据模型、CRUD操作与查询DSL、集群管理与性能优化,以及安全与插件扩展。文中通过代码示例介绍了如何进行文档操作、查询以及集群管理,并强调理解Elasticsearch的底层原理和优化策略对面试和实际工作的重要性。
56 6
|
5月前
|
存储 自然语言处理 算法
「扫盲」Elasticsearch
「扫盲」Elasticsearch
60 3
|
存储 自然语言处理 负载均衡
八.全文检索ElasticSearch经典入门-深入理解ElasticSearch核心原理
八.全文检索ElasticSearch经典入门-深入理解ElasticSearch核心原理
|
索引
白话Elasticsearch62-进阶篇之Highlighting高亮显示
白话Elasticsearch62-进阶篇之Highlighting高亮显示
92 0
|
SQL JSON 自然语言处理
全文检索工具elasticsearch:第一章:理论知识
全文检索工具elasticsearch:第一章:理论知识
262 0
|
存储 SQL 消息中间件
「扫盲」 Elasticsearch(上)
不知道大家的公司用Elasticsearch多不多,反正我公司的是有在用的。平时听同事们聊天肯定避免不了不认识的技术栈,例如说:把数据放在引擎,从引擎取出数据等等。如果对引擎不了解的同学,就压根听不懂他们在说什么(我就是听不懂的一位,扎心了)。引擎一般指的是搜索引擎,现在用得比较多的就是Elasticsearch。 这篇文章主要是对Elasticsearch一个简单的入门,没有高深的知识和使用。至少我想做到的是:以后同事们聊引擎了,至少知道他们在讲什么。
160 0
「扫盲」 Elasticsearch(上)
|
存储 缓存 算法
「扫盲」 Elasticsearch(下)
不知道大家的公司用Elasticsearch多不多,反正我公司的是有在用的。平时听同事们聊天肯定避免不了不认识的技术栈,例如说:把数据放在引擎,从引擎取出数据等等。如果对引擎不了解的同学,就压根听不懂他们在说什么(我就是听不懂的一位,扎心了)。引擎一般指的是搜索引擎,现在用得比较多的就是Elasticsearch。 这篇文章主要是对Elasticsearch一个简单的入门,没有高深的知识和使用。至少我想做到的是:以后同事们聊引擎了,至少知道他们在讲什么。
173 0
「扫盲」 Elasticsearch(下)
下一篇
无影云桌面