李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 系列文章
  • AI工具集
  • 论坛
  • 左邻右舍
    • 左邻右舍
    • 朋友圈
    • 游客中心
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • Now
    • 每日心情
    • 网站地图
    • 网站统计
    • 赞助
  • 星球穿梭
  • 🚇开往
白雪成红
惟坚韧者始能遂其志
  1. 首页
  2. 转载
  3. 技术
  4. 正文

终于有人把Elasticsearch原理讲透了!

2019年8月15日 约 1,243 字5 分钟 208 0 0
本文最后更新于 2019年8月15日,距今已 2619 天,其中的信息可能已经发生变化,请注意甄别。

小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了。

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

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

倒排索引

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

索引量爆炸

搜索引擎原理

Elasticsearch 简介

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

Elasticsearch 基本概念

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

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

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

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

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

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

Elasticsearch 分布式原理

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

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

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

ELK 系统

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

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

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

总结

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

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

写完,又高高兴兴背诗去了。

 

观书有感(朱熹)

半亩方塘一鉴开,天光云影共徘徊。

问渠那得清如许?为有源头活水来。

原文链接:http://developer.51cto.com/art/201904/594615.htm

参考链接

1
  1. 1http://developer.51cto.com/art/201904/594615.htmdeveloper.51cto.com
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
分享到

终于有人把Elasticsearch原理讲透了!

也可使用浏览器菜单中的「分享」功能

微信扫一扫分享

标签: ElasticSearch 搜索
最后更新:2019年8月15日

岁月同一天 10 月 17 日

回望过去的今天,你在写什么

  • AI
    1 年前 2025年10月17日
    从技术本质到生态关联,一文吃透 AIGC、RAG、Agent、Function Call、MCP

    当ChatGPT帮你写周报、MidJourney生成海报、AI助手自动规划旅行时,你可能没意识到:这些看似连贯的智能体验…

  • 中间件
    1 年前 2025年10月17日
    10 个MQ高频业务场景深度解析

    在分布式系统开发中,很多开发者都会疑惑:“明明直接调用接口就能实现功能,为什么还要引入MQ这个‘中间商’?”其实,当系统…

  • 7 年前 2019年10月17日
    从零开始入门 K8s | Kubernetes 网络概念及策略控制

    一、Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法。大家知道 Kuber…

相关文章
  • 解决Elasticsearch分页查询窗口数据太大问题2019年11月20日
  • Elasticsearch的分布式文档存储原理2019年12月4日
  • SpringBoot使用注解的方式构建Elasticsearch查询语句,实现多条件的复杂查询2019年9月12日
  • SpringBoot整合Elasticsearch游标查询(scroll)2020年10月16日
  • 为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?2025年3月31日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >
1234567891112131415161718192021222324252627282930313233343536373839404142434446474849505152535455575859606162636465666769727476777879808182858687909293949596979899
取消回复
…

文章评论

还没有评论,快来抢沙发吧~

我见青山多妩媚,料青山见我应如是。

听点儿音乐吧 朋友~
文章目录
最新 热点 随机
最新 热点 随机
Markdown 的前世今生 讨论下XXL-JOB GLUE模式的安全问题 心气没了,干什么都不得劲 Kratos-plus v1.1.26版本更新说明 我觉得是时候公布我的导航网站了 代码是 AI 写的,生产事故谁背锅?
给主题增加了游客中心功能心气没了,干什么都不得劲我觉得是时候公布我的导航网站了游本昌去世关于主题加载速度优化的一点儿小演进给主题增加了Now、每日心情、年度回顾、岁月同一天、随机漫步等功能
SpringBoot定时任务 - 经典定时任务设计:时间轮(Timing Wheel)案例和原理 部署consul配置中心 Python SQL查询使用动态表名 WordPress缓存插件WP Fastest Cache、WP Rocket 、FlyingPress对比 AI时代,个人技术博客的出路在哪里? 因在公司上不正经网站,我没过试用期…
最近评论
李锋镝 发布于 12 小时前(10月16日) 其实语法很好记,而且也有很多markdown的文本编辑器
李锋镝 发布于 12 小时前(10月16日) Typecho就是太轻量了,导致很多功能都没有
沐阳 发布于 13 小时前(10月16日) 换了Markdown,好多代码都要重新记
不凡 发布于 16 小时前(10月16日) 我搭建临时站点看了下,是有个预览,然后发现是主题对markdown编辑器做了“二开”加了一些自定义按...
不凡 发布于 16 小时前(10月16日) 我开发的插件替代了原生附件管理,在附件管理显示最近上传的文件,点击缩略图就直接插入了,不过插入的仍然...
标签聚合
架构 K8s SQL ElasticSearch 分布式 Redis 多线程 Claude WordPress SpringBoot 日常 AI编程 JVM AI MySQL 数据库 Spring JAVA IDEA Theme
友情链接
  • 刘永博客
  • 彬红茶日记
  • 九仞之行
  • 林羽凡
  • 韩情脉脉
  • 瓦匠个人小站
  • 知向前端
  • 哥斯拉
  • 老张博客
  • 志文工作室
  • lijie blog
  • sssr7844的博客
  • Honesty
  • 皮皮社
  • 懋和道人
  • Mr.Sun的博客
  • 韩小韩博客
  • 搬砖日记
  • Serendipity

COPYRIGHT © 2016-2026 lifengdi.com. ALL RIGHTS RESERVED.

lifengdi.com 十年之约虫洞

Domain age badge for lifengdi.com

Theme Kratos-plus By Dylan Li

津ICP备2024022503号-3

京公网安备11011502039375号