热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图解Elasticsearch原理,哈哈

随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节。但是由于小史很久没有背过诗词了,飞一个字很难说出一句,很多之前很熟悉的诗句也想不起来。           

随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节。

但是由于小史很久没有背过诗词了,飞一个字很难说出一句,很多之前很熟悉的诗句也想不起来。

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:但是我让你说出带“前”字的诗句,由于没有索引,你只能遍历脑海中所有诗词,当你的脑海中诗词量大的时候,就很难在短时间内得到结果了。

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

索引量爆炸

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

搜索引擎原理

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

Elasticsearch 简介

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:但是 Lucene 还是一个库,必须要懂一点搜索引擎原理的人才能用的好,所以后来又有人基于 Lucene 进行封装,写出了 Elasticsearch。

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

Elasticsearch 基本概念

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:类型是用来定义数据结构的,你可以认为是 MySQL 中的一张表。文档就是最终的数据了,你可以认为一个文档就是一条记录。

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:比如一首诗,有诗题、作者、朝代、字数、诗内容等字段,那么首先,我们可以建立一个名叫 Poems 的索引,然后创建一个名叫 Poem 的类型,类型是通过 Mapping 来定义每个字段的类型。

比如诗题、作者、朝代都是 Keyword 类型,诗内容是 Text 类型,而字数是 Integer 类型,最后就是把数据组织成 Json 格式存放进去了。

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:这个问题问得好,这涉及到分词的问题,Keyword 类型是不会分词的,直接根据字符串内容建立反向索引,Text 类型在存入 Elasticsearch 的时候,会先分词,然后根据分词后的内容建立反向索引。

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

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

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

 

图解Elasticsearch原理,哈哈

 

 

Elasticsearch 分布式原理

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:没错,Elasticsearch 也是会对数据进行切分,同时每一个分片会保存多个副本,其原因和 HDFS 是一样的,都是为了保证分布式环境下的高可用。

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:没错,在 Elasticsearch 中,节点是对等的,节点间会通过自己的一些规则选取集群的 Master,Master 会负责集群状态信息的改变,并同步给其他节点。

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:注意,只有建立索引和类型需要经过 Master,数据的写入有一个简单的 Routing 规则,可以 Route 到集群中的任意节点,所以数据写入压力是分散在整个集群的。

 

图解Elasticsearch原理,哈哈

 

 

ELK 系统

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:其实很多公司都用 Elasticsearch 搭建 ELK 系统,也就是日志分析系统。其中 E 就是 Elasticsearch,L 是 Logstash,是一个日志收集系统,K 是 Kibana,是一个数据可视化平台。

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

吕老师:分析日志的用处可大了,你想,假如一个分布式系统有 1000 台机器,系统出现故障时,我要看下日志,还得一台一台登录上去查看,是不是非常麻烦?

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

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

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

图解Elasticsearch原理,哈哈

 

 

总结

小史学完了 Elasticsearch,在笔记本上写下了如下记录:

  • 反向索引又叫倒排索引,是根据文章内容中的关键字建立索引。
  • 搜索引擎原理就是建立反向索引。
  • Elasticsearch 在 Lucene 的基础上进行封装,实现了分布式搜索引擎。
  • Elasticsearch 中的索引、类型和文档的概念比较重要,类似于 MySQL 中的数据库、表和行。
  • Elasticsearch 也是 Master-slave 架构,也实现了数据的分片和备份。
  • Elasticsearch 一个典型应用就是 ELK 日志分析系统。

推荐阅读
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 本文探讨了在PHP中实现MySQL分页查询功能的优化方法与实际应用。通过详细分析分页查询的常见问题,提出了多种优化策略,包括使用索引、减少查询字段、合理设置缓存等。文章还提供了一个具体的示例,展示了如何通过优化模型加载和分页参数设置,显著提升查询性能和用户体验。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
author-avatar
小爬虫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有