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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
22 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
1月前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
123 0
因为一个问题、我新学了一门技术 ElasticSearch 分布式搜索
这篇文章讲述了作者因为一个检索问题而学习了ElasticSearch技术,并分享了排查和解决ElasticSearch检索结果与页面展示不符的过程。
因为一个问题、我新学了一门技术 ElasticSearch 分布式搜索
|
6月前
|
监控 搜索推荐 安全
面经:Elasticsearch全文搜索引擎原理与实战
【4月更文挑战第10天】本文是关于Elasticsearch面试准备的博客,重点讨论了四个核心主题:Elasticsearch的分布式架构和数据模型、CRUD操作与查询DSL、集群管理与性能优化,以及安全与插件扩展。文中通过代码示例介绍了如何进行文档操作、查询以及集群管理,并强调理解Elasticsearch的底层原理和优化策略对面试和实际工作的重要性。
68 6
|
SQL JSON 自然语言处理
全文检索工具elasticsearch:第一章:理论知识
全文检索工具elasticsearch:第一章:理论知识
270 0
|
机器学习/深度学习 人工智能 运维
《Elasticsearch 实战手册》研读-企业搜索(2) | 学习笔记
快速学习《Elasticsearch 实战手册》研读-企业搜索(2)
|
SQL JSON 自然语言处理
elasticsearch实战三部曲之三:搜索操作
本文是《elasticsearch实战三部曲》的终篇,作为elasticsearch的核心功能,搜索的重要性不言而喻,今天的实战都会围绕搜索展开
149 0
elasticsearch实战三部曲之三:搜索操作
|
存储 JSON 自然语言处理
史上最全的ElasticSearch系列之基础(一)(上)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
224 0
|
JSON Java API
史上最全的ElasticSearch系列之基础(一)(下)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
150 0