李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 左邻右舍
  • 博友圈
  • 关于我
    • 关于我
    • 另一个网站
    • 我的导航站
    • 网站地图
    • 赞助
  • 留言
  • 走心评论
  • 系列文章
  • 🚇开往
Destiny
自是人生长恨水长东
  1. 首页
  2. 转载
  3. 技术
  4. 正文

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

2019年8月15日 约 1,243 字5 分钟 245点热度 0人点赞 0条评论
本文最后更新于 2019年8月15日,距今已 2526 天,其中的信息可能已经发生变化,请注意甄别。

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

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

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

倒排索引

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

索引量爆炸

搜索引擎原理

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

除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/transport/569

推荐阅读

  • Elasticsearch:cat API 介绍及其使用
  • 为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
  • ThreadLocal如何解决内存泄漏问题
  • 高并发下的数据一致性保障
  • SpringBoot定时任务 - 经典定时任务设计:时间轮(Timing Wheel)案例和原理
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: ElasticSearch 搜索
最后更新:2019年8月15日
相关文章
  • Elasticsearch中的多索引、多类型搜索2019年10月24日
  • MySQL 同步 ElasticSearch 深度指南——6 种方案的原理、实战与避坑2025年10月30日
  • SpringBoot使用注解的方式构建Elasticsearch查询语句,实现多条件的复杂查询2019年9月12日
  • ElasticSearch入门-基本概念介绍以及安装2019年9月6日
  • Elasticsearch的分布式文档存储原理2019年12月4日

李锋镝

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

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

文章评论

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

秋天是倒放的春天,晚安是爱你的序篇。

听点儿音乐吧 朋友~
文章目录

那年今日(07月16日)

  • 1945年:美国成功试爆世界上第一颗原子弹
  • 1936年:日本首相福田康夫出生
  • 1919年:中国科学院院士杨嘉墀出生
  • 1916年:乳酸菌之父梅契尼科夫逝世
  • 1216年:罗马教皇英诺森三世逝世
  • 更多历史事件
最新 热点 随机
最新 热点 随机
增加了两套复古皮肤-牛皮纸、千禧网页 Claude Design介绍与使用 Kratos+主题新功能介绍 Taste Skill 说明与使用 jasypt-spring-boot 使用说明 Kratos+主题新功能预览及功能演示
AI时代,个人技术博客的出路在哪里?这个域名注册整整十年了,十年时间,真快啊WordPress实现用户评论等级排行榜插件WordPress网站换了个字体,差点儿把样式换崩了做了一个WordPress文章热力图插件千万级大表新增字段实战指南:告别锁表与业务中断
AI 协作新范式:以文档为中心的开发实践指南 Consul开启transparent-proxy访问外部资源的时候,请求偶发Connection reset问题分析 提示词工程进阶指南:8大核心技巧,让AI精准读懂你的需求(2025实战版) Java并发编程之如何保证线程顺序执行 从零开发 MCP 协议工具:从原理到实战的完整指南(Python 版) Elasticsearch:cat API 介绍及其使用
最近评论
李锋镝 发布于 2 天前(07月14日) 外面的主题功能差异化比较大,部分功能没有还得通过插件来实现,这样样式也不统一,而且经常有爆出风险、漏...
瓦匠 发布于 2 天前(07月14日) 很奈斯啊,都在设计属于自己的主题了,羡慕了
rxshc 发布于 3 天前(07月13日) 工具看着挺实用的。
李锋镝 发布于 7 天前(07月09日) https://github.com/Leonxlnx/taste-skill
李锋镝 发布于 1 周前(07月06日) 哈哈哈,你那个主题做的也很棒
标签聚合
多线程 K8s MySQL JVM Spring 分布式 IDEA AI Redis JAVA MCP ElasticSearch 架构 AI编程 SpringBoot 设计模式 日常 数据库 SQL WordPress
友情链接
  • Blogs·CN
  • Honesty
  • Mr.Sun的博客
  • 临窗旋墨
  • 哥斯拉
  • 彬红茶日记
  • 志文工作室
  • 懋和道人
  • 拾趣博客导航
  • 搬砖日记
  • 旧时繁华
  • 林羽凡
  • 瓦匠个人小站
  • 皮皮社
  • 知向前端
  • 韩小韩博客
  • 风渡言

COPYRIGHT © 2026 lifengdi.com. ALL RIGHTS RESERVED.

域名年龄

Theme Kratos+ By Dylan Li

津ICP备2024022503号-3

京公网安备11011502039375号