收藏 分销(赏)

Elastic Stack 实战手册.pdf

上传人:Stan****Shan 文档编号:1239615 上传时间:2024-04-19 格式:PDF 页数:1627 大小:42.44MB
下载 相关 举报
Elastic Stack 实战手册.pdf_第1页
第1页 / 共1627页
Elastic Stack 实战手册.pdf_第2页
第2页 / 共1627页
Elastic Stack 实战手册.pdf_第3页
第3页 / 共1627页
Elastic Stack 实战手册.pdf_第4页
第4页 / 共1627页
Elastic Stack 实战手册.pdf_第5页
第5页 / 共1627页
点击查看更多>>
资源描述

1、推荐语Elasticsearch 无疑是大数据搜索引擎中的王者,它以其开放及免费、易用、多语言接口、卓越性能及不断创新的优势,被许多 IT 企业所采用。当今的许多 IT 企业很难绕过它。在中国,Elastic Stack 有一个很强大的生态圈。在本书的创作过程中,我非常高兴看到有数十位志愿者参与到本书的创作中。这本书集众技术大咖及专家们的无私奉献,是他们牺牲了自己宝贵的时间,利用业余时间共创完成,在一遍遍的修改中把内容做得更完善。在这里衷心感谢他们的无私付出和合作。写书和做社区贡献,是需要情怀的。我一直坚信帮助别人,也会成就自己。分享自己的知识,也是一件很快乐的事,因为这样可以证明自己的人生价

2、值。我有超过 16 年的社区参与经历,也非常喜欢分享我学到的知识。从加入 Elastic 公司以来,我在 CSDN 上已经发表了将近 660 篇关于 Elastic Stack 方面的文章,涵盖了 Elastic Stack 方方面面的知识。作为本书主编,我投入了很多时间来策划、创作、校正及阅读这本书,尽力保证本书的完整性、正确性、一致性及每篇文章的独立性。尽管如此,里面可能有不尽之处,希望读者们海涵!这本书涵盖了 Elastic Stack 的介绍、安装、实操、产品能力、方案及案例,特别适合初学者,对有经验的开发者来说也是一本难得的参考书。在未来,希望有更多的开发者分享自己的知识,让我们一起

3、把 Elastic 社区做得更好!Elastic 中国区资深社区布道师-刘晓国开源搜索引擎这十来年的发展,基本就是 Lucene 体系的发展。而基于 Lucene 的诸多开源搜索引擎中,Elasticsearch 以其极好的易用性、开箱即用的体验迅速折服了开发者。其边界也从最早的搜索引擎,扩展到了日志全观察、安全分析等场景,形成了今天的 Elastic Stack,具备从数据采集、处理、分析到展示的强大生态能力。本书集成社区几十位开发者的心血,分入门、进阶、应用实践三大部分,从开发者最佳实践角度,循序渐进帮助大家更好使用、理解 Elastic Stack。ES 应用十分广泛,成为大数据的必备工

4、具之一,但我们发现,能熟练使用 Elasticsearch,熟悉 Elasticsearch 原理的人才非常稀缺,期待本书能帮助更多开发者成为 Elasticsearch 专家。阿里巴巴搜索推荐云服务技术负责人-郭瑞杰祝贺本书的顺利出版,这是开源社区完美协助的又一次成功体现,数十位志愿者通力合作共同完成了本书的编写,也真切地感受到了各位社区小伙伴对 Elasticsearch 的喜爱之情。本书从案例出发,不仅详细地介绍了 Elastic Stack 的各个功能组件的具体用法,还提供了不少来自一线的宝贵实践案例分享,不管是对于刚接触或是想要了解 Elasticsearch 更多知识的同学,本书都

5、具有很好的参考价值。开卷有益,一起进入 Elastic 的精彩世界吧。Elastic 中文社区创始人-曾勇Elasticsearch 作为一个非常优秀的免费及开放搜索引擎,已经被广泛应用到电商、APM、运维、企业搜索等业务场景中。Elastic Stack 实战手册是由不同业务领域的 Elasticsearch 专家参与编写的一部实战类的书籍,汇聚了各个业务场景下的 Elasticsearch 使用经验,包括Elasticsearch 最新的一些特性,以及 Elasticsearch 在不同行业中的实践经验,无论是Elasticsearch 的用户,还是在做搜索相关的技术选型,相信这本书都会给

6、你带来一定的帮助。清博智能技术 VP-王欢数据技术领域一直都受益于开源、开放,在信息过载的时代蓬勃发展。Elastic Stack 就是这数据激流中的标杆,基于开源,始于搜索,通过开箱即用的体验持续降低了搜索和大数据领域的门槛,如今已家喻户晓,成为优秀开发者的必备技能之一。这份Elastic Stack 实战手册同样受益于社区的开放性,是集体智慧的结晶,相信定能帮助更多开发者学习、理解和掌握 Elastic Stack,并应用于各自的业务实践,用技术驱动业务增长并创建价值。在此我也呼吁更多开发者朋友积极参与进来,用建议和行动让“手册”得以持续进化。Elastic 中文社区深圳区负责人-杨振涛从

7、 Lucene 到 Elasticsearch,到 ELK,再到当下 Elastic Stack,见证了这个产品体系逐步壮大发展到行业领先,也见证了大数据发展的技术迭代。Elastic Stack 已经越来越成为时代的标配,应用领域无处不在,没有使用 Elastic Stack 的企业不值得拥抱,没有掌握 Elastic Stack的工程师不值得信任。本书是迄今为止参与人数最多,综合方面最全的专业书籍,感谢社区集合了多方面力量与资源,本人有幸参与审校,提前阅读了部分内容,推荐应用实践部分,毕竟能实战才是王道。力萌信息数据领域专家-李猛大数据近几年有了突飞猛进的发展,有数据的地方都离不开数据预处

8、理、分析、检索、聚合、可视化分析等应用场景。以 Elasticsearch、Logstash、Kibana、Beats 等组成的 ElasticStack,以其门槛低、上手快、版本迭代快、社区响应快等特点和优势,使得看似“遥不可及、高深莫测”的大数据存储、检索与分析技术“飞入寻常百姓家”。从一线大厂:阿里、腾讯、头条、滴滴、快手等到国内创业公司,甚至连婚庆网站都在使用 Elasticsearch。“Elastic 用的好,下班下的早”从一种半调侃的标语已然成为互联网实际人才衡量依据。本人不才,从 1.X、2.X 版本接触 Elasticsearch,不觉中已有 6 年+的时间了,基本上是:以实

9、际产品/项目驱动学习、以考试驱动学习、以社区互动输出、博客输出倒逼输入学习的方式。在 Elastic 中文社区、技术微信群、技术 QQ 群中经常被问到:“Elasticsearch 到底如何学?”,“Elasticsearch 基础进阶学习有没有书推荐?”我通常的建议是啃官方文档,必要时磕源码。但这种宽泛的建议不见得适合每一个人。今年上半年当我被邀请参加“Elasticsearch百人大作战”的时候,我知道 Elastic 中文社区和阿里云要做这件事了。这是 Elasticsearch圈子里的一件大事、幸事。5 个月后,当我拿到Elastic Stack 实战手册这本电子书书稿的时候,我还是非

10、常感动的。我深知多人异地协作创作的不易、感慨各位行业大佬的效率、感激各位创作者的“心血”。全书以 7.10 版本(全网书籍最新)作为讲解版本,涵盖了应用场景、基础、应用和实战案例。既包含了开源版本的核心基础功能,又创新性地包含了机器学习、高阶安全、APM、ElasticCloud 等付费功能,难能可贵的是,这些高阶功能市面上的资料都非常少。本书的亮点和特色就在于:将企业实战业务场景的方案进行了全方位的解读,包含但不限于:基于舆情的全文检索场景、基于智能巡检、流媒体、面部识别等基础的日志分析场景,这些来源于实战的解读对于企业架构选型、开发、运维都非常有帮助。在此,我向大家推荐这本电子书,期望大家

11、和我一样读后有收获!“前事不忘后事之师”,也期望大家一起(包括我自己)多给 Elasitc 社区做贡献,期望我们的 Elastic 社区成为我们学习、进阶、成长的“伊甸园”!最后,以“共和国勋章”获得者、中国工程院袁隆平院士 2019 年湖南农大演讲的一句话,“汗水指的是要能吃苦,任何一个科研成果都来自于深入细致的实干和苦干”和大家共勉。我坚信:获得科研成果要吃苦、掌握任何一门技术也要吃苦,Elasticsearch 也不例外!Elasticsearch 公众号作者-铭毅天下目录一、序言.10二、导读.12Elasticsearch 的前世今生.16三、产品能力.253.1.理解 Elasti

12、c Stack.263.1.1.从 Elasticsearch 到 Elastic Stack.263.2.核心应用场景.333.2.1.企业搜索.333.2.2.可观测性.483.3.基础篇.533.3.1.Elastic Stack 家族.533.3.2.专有名词解释.653.4.入门篇.803.4.1.Elastic Stack 安装部署.803.4.1.1.安装 Elasticsearch(本地及 docker).803.4.1.2.Kibana(本地及 docker).1163.4.1.3.安装 Beats(本地及 docker).1333.4.1.4.安装 Logstash(本地及

13、 Docker).1433.4.1.5.配置集群安全访问.1503.4.1.6.配置多节点集群.1693.4.1.7.阿里云 Elasticsearch 服务.1813.4.1.8.ECK 安装.1973.4.2.Elasticsearch 基础应用.2703.4.2.1.inverted index,doc_values,store 及 source.2703.4.2.2.理解 mapping.2833.4.2.3.Search 通过 Kibana.2903.4.2.4.分布式计分.3613.4.2.5.Object 数据类型.3823.4.2.6.Join 数据类型.3893.4.2.7.

14、Nested 数据类型.3933.4.2.8.Index template.4063.4.2.9.Search template.4333.4.2.10.Dynamic Mapping.4443.4.2.11.Index alias.4613.4.2.12.Reindex API.4863.4.2.13.Rollover API.5213.4.2.14.分页搜索.5453.4.2.15.ingest pipelines.5503.4.2.16.Painless scripting.5693.4.2.17.Text analysis,settings 及 mappings.5883.4.2.17

15、.1.Multi-field.5883.4.2.17.2.Schemaless.5963.4.2.17.3.全文搜索/精确搜索.6043.4.2.17.4.Analyzers/Custom analyzers.7013.4.2.17.5.中文分词器/IK 分词器/pinyin 分词器.7783.4.2.18.Denormalizing/flattening data.7933.4.2.19.copy_to.7973.4.2.20.Refresh/flush.8033.4.2.21.Aggregations.8133.4.3.Kibana 基础应用.8843.5.进阶篇.9423.5.1.跨集群

16、操作.9423.5.2.Kibana 的 Alert.9553.5.3.Rollup.9673.5.4.Graph.9983.5.5.Shard allocation.10063.5.6.Datastream.10233.5.7.索引生命周期管理.10473.5.8.Canvas.10753.5.9.Space.10813.5.10.APM.10893.5.11.Uptime.11003.5.12.Monitoring 及 Central Management.11073.5.13.Transform.11473.5.14.Watcher.11643.5.15.Snapshot.11763.5

17、.16.Machine learning.11923.5.16.1.Setup and security.11923.5.16.2.Getting started.11993.5.16.3.Anomaly detection.12113.5.16.4.Data frame analytics.12323.5.17.Elasticsearch SQL.12563.5.18.Enterprise Search.12933.5.18.1.Workplace Search.12933.5.18.2.Site Search.13243.5.18.3.App Search.13403.5.19.Elast

18、icsearch 语言开发(Python/Nodejs/Java).13553.5.19.1.Elasticsearch 语言开发(Python).13553.5.19.2.Elasticsearch 语言开发(Node.js).13653.5.19.3.Elasticsearch 语言开发(Java).13843.5.20.ECS 介绍.1393四、应用实践.14014.1.企业搜索应用场景.14024.1.1.Elasticsearch 在舆情搜索中的实践.14024.1.2.实现主流搜索引擎广告置顶显示效果.14124.1.3.企业 ELK 日志搜索引擎.14234.1.4.基于 Ela

19、sticsearch 构建业财数据实时聚合搜索的发布平台.14294.1.5.Elasticsearch 在搜索引擎构建中的实践.14344.1.6.优化 Elasticsearch 中的打分(_score).14434.2.可观测性应用场景.14584.2.1.基于 Elasticsearch 实现预测系统.14584.2.2.Elasticsearch 智能巡检开发设计实践.14704.2.3.CDN 流媒体服务实时分析 Elasticsearch 实践.14894.2.4.Elasticsearch 和 Python 构建面部识别系统.14994.2.5.在 Docker 上使用 Ela

20、stic Stack 和 Kafka.15164.2.6.运用 Elastic Stack 分析 COVID-19 数据.15384.2.7.IP 地址分布地图可视化.15694.3.性能优化场景.15804.3.1.Elasticsearch 生产环境集群部署最佳实践.15804.3.2.Elasticsearch 开发人员最佳实践指南.15944.3.3.Elasticsearch 性能优化之内存和熔断浅析.1613五、致谢.1626一、序言11一、序言Welcome readers!On behalf of Elastic,Im honoured to present this amaz

21、ing work from hundreds ofour Alibaba and Elastic community contributors,and we are proud to have workedalongside everyone involved in bringing it to fruition.Wed like to specially thankAlibaba for their assistance and expertise in preparing the project,the communitymembers who shared their experienc

22、es and knowledge in providing content pieces,and our Elastic team who leveraged their expertise to editorialise the final outcome.If you are new to the Elastic Stack,or an experienced practitioner,this book willgive you many examples of how to deploy the Elastic Stack to Search,Observe andProtect yo

23、ur data and its systems,and create valued insights and information.Wealso invite you to join our extended Alibaba and Elastic communities,both on andoff line,where you can meet with peers and share knowledge around your use ofthe Elastic Stack on Alibaba Cloud.Alibaba and Elastic host recurring join

24、t usergroup sessions,online webinars,technical blog posts,forums,conferences and more,to keep you educated on the work we do to progress the technology behind theElastic Stack.The Alibaba and Elastic relationship grows stronger every day,and thefuture is bright as we continue to work together in hel

25、ping our joint communityembrace the Elastic Stack on Alibaba Cloud.Mark WalkomCommunity Team Lead-APJ二、导读13二、导读Elastic Stack 实战手册的创作发布,源自于阿里云和 Elastic 联合主办的三周年系列活动(https:/ 百人大作战。这是一次有趣的大规模协作活动,集结了 Elasticsearch 技术圈百位开发者共创,旨在凝聚圈内优秀的创作人的实践经验和创作能力,输出一本能为开发者提供实践参考的书籍指南,推动技术应用和发展。在活动过程中,本书得到了数十位在大数据搜索领域颇

26、有经验的优秀开发者的支持,其中包括许多知名的业界精英,例如在社区有一定影响力的技术大咖,具有大数据及 Elastic Stack 相关书籍出版经验的作者等。这是一个自发所组成的团队努力的成果,也是一次成功的尝试。本书涵盖了一个 Elastic Stack 开发者所需的大部分知识,尤其对于刚入门的开发者而言,是一本非常值得推荐的参考读物。本书内容由浅入深,从基础的 Elastic Stack 产品能力到后半部的应用实践,为开发者使用 ElasticStack 提供了必要的基础知识和应用参考。全书基于 Elastic Stack 7.10 及以上版本撰写,包含完整的 Elastic 产品能力篇和应

27、用实践篇,正式发布后,本书将随着 Elastic Stack 的版本升级持续迭代。书籍主要包含如下篇章:Elastic 产品能力篇本篇介绍了 Elastic 的三大产品能力和应用方法。为了便于阅读,满足不同阶段开发者的需求,本篇分为三个部分:基础篇:如果你是一位对于 Elastic Stack 还不甚了解的开发者,非常建议阅读本章内容。本章包含了 Elastic Stack 的基础介绍、能力组成,以及技术优势等。同时,还介绍了Elasticsearch 中必要了解的专用术语,以便正确理解后文的内容。入门篇:本章是学习 Elastic Stack 夯实基础的部分,涵盖了非常广泛的内容,主要分为以

28、下:14二、导读1、Elastic Stack 部署:本章节介绍了如何安装 Elastic Stack 的 4 个重要组件(包括 Elasticsearch,Kibana,Beats 及 Logstash)。安装环境包括本地部署,Docker 部署,以及如何使用阿里云快速部署一个 Elastic 集群。同时还包括必要的技能如何部署一个多节点的集群。通过学习如何为集群配置安全,创建用户并为不同的用户配置不同的角色,你将深刻体会到安全对一个集群的重要性。2、Elasticsearch 基础应用:Elasticsearch 是整个 Elastic Stack 的核心,本章节也是理解Elasticse

29、arch 最重要的部分。通过本章的阅读,你将学习如何创建 Elasticsearch 索引(CURD),如何对索引创建 mappi-ngs,倒排索引到底是什么,如何分词,以及如何对数据进行扁平化、结构化,并对他们进行搜索。同时了解不同的数据类型(object,nested,joined 等),动态 mapping,index template,分布式计分,reindex,分页搜索,ingest pipeline,脚本编程,aggregations 等。当你掌握了本章节的内容,相信你可以很自豪地对自己说:我也是一个 data engineer。3、Kibana 基础应用:Kibana 是 Ela

30、stic Stack 的可视化窗口,担负着对 Elastic Stack 进行管理和监控的重任。本章节对于了解 Kibana 是非常有益的。本章介绍如何使用 Kibana 对数据进行搜索、分析,重点学习如何使用 Discover 进行数据搜索,使用时间过滤器选择数据,创建 index pattern。同时,了解制作不同的可视化图(垂直条形图、地图、仪表盘、指标、数据表、折线图、饼图等),并组成面板(Dashboard)以及使用 Lens 制作可视化图的方法技巧。进阶篇:本章建议读者在对 Elastic Stack 有基本了解的前提下,针对一些功能进行深入学习。掌握这个章节对于希望将 Elast

31、ic Stack 熟练运用到场景实践中的读者而言非常关键。在本章节,你将了解 CCR/CCS,Rollup,Data stream,索引生命周期管理,分片管理(shard allocation/awareness),Snapshot,Watcher,Alerts,Transform,Graph,机器学15二、导读习,Elasticsearch SQL,Cavas,APM,Uptime,Enterprise Search,集群管理及监控,Elasticsearch 各类语言开发示例,ECS 等高级进阶功能。应用实践篇本篇也是全书的核心部分之一,主要以三大产品能力场景,以及性能优化场景划分。全书最

32、终将呈现数十个各行各业应用 Elastic Stack 产品能力的实践案例,每个案例自成一体,独立于其它案例。读者可以选择自己感兴趣或符合应用场景需求的案例进行阅读参考。众所周知,Elastic Stack 的迭代速度非常快,每一两个月就会有一个小版本发布,因此,每位开发者都需要不断地学习,更新知识。希望通过本书的阅读,能够为读者学习 Elastic Stack提供实用的参考意义。同时,我们也深知,Elastic Stack 实战手册是一本由众多开发者共同书写的书籍,涉及了几十个人的视角、技术经验和写作习惯,这正是共创的趣味所在,也隐藏着许多不足。但这本书刚刚孵化起步,相信在未来的更新迭代中,

33、它将无限趋近于更实用、更丰富。我们也在此呼吁每一位开发者,将自己技术积累书写成文章,加入创作人群体,与我们一起学习交流、同频共振,这将不只是部分人的书籍,而是所有 Elastic Stack 开发者的实战指南。学习拓展:更多 Elastic Stack 知识,请访问官方文档:https:/www.elastic.co/guide/index.html阿里云 Elasticsearch 支持本书所需的学习环境,2c4g 3 节点1 元试用 30 天:https:/ 的前世今生创作人:曾勇需求的诞生刘备一大早就来到了公司,一看张飞和关羽已经在公司了,就问道:“两位贤弟,今天来的还蛮早啊。”张飞一听

34、就炸毛了,“大哥,你让我和二哥去做什么搜索功能,我们已经一晚没睡了,昨天就没回去好嘛。”关羽也来气,“大哥,是啊,我们刚刚才上线电商网站,你这边又要加什么需求,现在用数据库检索不是好好的么,能不能让我们歇口气。”“两位兄弟辛苦了,我也不想啊,最近咱们一单生意都没有啊。昨天我和一位朋友聊,他说我们的网站很不好用,找不到他想要的鞋,结果只好去别的地方买了。不过他给我推荐了一位黑客高手,叫诸葛亮的家伙,说是啥都得懂,我们今天找他取经去。”17二、导读三顾茅庐三人一行来找诸葛亮,不过前面两次都碰了壁。据诸葛亮书童说,诸葛亮不在家,到了第三次,还是不在家。张飞仔细一听,明明是有人在家啊,而且玩游戏喊的声

35、音还这么大,张飞怒了,搭梯子把诸葛亮家的保险给拔了。诸葛亮正郁闷呢,咋停电了呢?算了,今天没得玩了,于是让书童请他们进来。“在下诸葛名亮,字孔明,不知三位.”,三人一说,是这么这么回事。诸葛亮一听,“哦,原来是这么这么回事啊,你们的网站我刚看了,你们家的草鞋品种确实不 Nan 少 Kan。如今客户上网站找东西,都是先用网站的搜索来搜一下,但是你们网站的搜索功能实在是太 La 弱 Ji,明摆在那里的商品我都搜不出来,实在是大问题啊。”“这样啊,我看你们仨都是好人,给你们推荐一个好东西,叫做 Elasticsearch,这个肯定可以帮助你们。”“翼德,把先生放下来吧。”“是,大哥。二哥,你把刀也放

36、下吧。”关羽一听,好像在哪里听说过 Elasticsearch,“大哥,这个东西好像有点耳熟啊,哦,诸葛亮先生这一说,我倒是记起来了,隔壁公司的吕布最近神神秘秘的,好像就是在用这个,难怪他们最近公司业务好的很”。Elasticsearch 的故事诸葛亮清了清嗓子,又从抽屉里摸出一把扇子,“还是让我来给你们讲讲吧”。“Elasticsearch 以前叫 Elastic Search。顾名思义,就是“弹性的搜索”。很明显,它一开始是围绕着搜索功能,打造了一个分布式搜索引擎,底层是基于开源的搜索引擎库 Lucene,是由Java 语言编写的,项目大概是 2010 年 2 月份在 Github 正式落

37、户的。18二、导读咳咳,有必要首先给你介绍一下 Lucene。Lucene 是一个非常古老的搜索引擎工具包,也是用Java 编写,主要用来构建倒排索引(一种数据结构)和对这些索引进行检索,从而实现全文检索功能。Lucene 很强大,使用起来也非常灵活,缺点是它仅仅是一个基础类库,也没有考虑到高并发和分布式的场景。如果你想在自己的程序里面使用 Lucene,还是需要做很多工作,并且涉及很多搜索原理和索引数据结构的知识,这就给我们带来了不少挑战。所以,Lucene 的上手时间一般都比较长。”关羽插了一句,“Lucene 我知道,确实贼难用,使用起来一堆问题啊,我之前试过来着。”关羽说完,脸又红了。

38、诸葛亮接着说。“时间一晃来到 2004 年,有一个以色列小伙子,名字叫谢伊班农(ShayBanon),他成亲不久来到伦敦,因为当时他的夫人正好在伦敦学厨师。初来乍到,也没有找到工作,于是班农就打算写一个叫作 iCook 的小程序来管理和搜索菜谱,一来练练手,方便找工作;二来这个小工具还可以给其夫人用。班农在编写 iCook 的过程中,使用了 Lucene,感受到了直接使用 Lucene 开发程序的各种暴击和痛苦,于是他在 Lucene 之上,封装了一个叫作 Compass 的程序框架,与 Hibernate和 JPA 等 ORM 框架进行集成,通过操作对象的方式来自动地调用 Lucene 以构

39、建索引。这样做的好处是,可以很方便地实现对领域对象进行索引的创建,并实现字段级别的检索,以及实现全文搜索功能。可以说,Compass 大大简化了给 Java 程序添加搜索功能的开发。Compass 开源出来,变得很流行。在 Compass 编写到 2.x 版本的时候,社区里面出现了更多需求,比如需要有处理更多数据的能力以及分布式的设计。班农发现只有重写 Compass,才能更好地实现这些分布式搜索的需求,于是 Compass 3.0 就没有了,取而代之的是一个全新的项目,也就是 Elasticsearch。”19二、导读让人砰然心动的 Elasticsearch看到刘备三人听的入迷,诸葛亮轻挥

40、羽扇,继续说了下去。“得益于 Compass 项目的积累,Elasticsearch 问世之初就考虑到了功能的易用性。Elasticsearch 作为一个独立的搜索服务器,提供了非常方便的搜索功能。用户完全不用关心底层 Lucene 的细节,只需要通过标准的 Http+RESTful 风格的 API,就可以进行索引数据的增删改查。数据的输入输出采用 JSON 格式,以文档和面向对象的方式,这样就能非常方便地理解和表达领域数据。”张飞一拍桌子,“Elasticsearch 简直就是一个 Compass 的 RESTful 实现啊!”“没错。同时,Elasticsearch 基于分片和副本的方式实

41、现了一个分布式的 Lucene Directory,再结合 Map-reduce 的理念,实现了一个简单的搜索请求分发合并的策略,能轻松化解海量索引和分布式高可用的问题。可以说,仅仅依靠这两点,Elasticsearch 就已经秒杀了当时市面上所有的搜索引擎服务或是程序库,我当时看到 Elasticsearch 也眼前一亮。如今,Elasticsearch 基本上已经是搜索引擎市场排名第一的产品了,从 DB-Engines 网站的排名可以看到,Elasitcsearch 基本上是一骑绝红尘,拉开第二名远远一大截。”20二、导读统计数据来源:https:/db- 横空出世诸葛亮口水狂飙,显得很兴

42、奋,“如果只是 Elasticsearch 单独使用,那我们的故事也就结束了,事实上好戏这才刚刚开始。俗话说,一个好汉三个帮,开源社区亦是如此。”“这一个好汉三个帮,说的不就是咱仨嘛。”刘备接过话茬。“别打岔,”诸葛亮继续说,“这里我要说的是ELK的出现,不过首先我要给你们讲讲Logstash。”“Logstash 是一个开源的日志处理工具,用 JRuby 写的,主要特点是基于灵活的 Pipeline管道架构来处理数据。什么意思呢?可以理解为将数据放进一个管道内进行处理,并且就跟真正的自来水管一样,管道由一截一截管子组成,每一个小管代表着一个数据处理的流程,每一个流程只做一件事情,然后可以根据

43、数据的处理需要,选择多个不同类型的管子灵活组装。Logstash 社区非常活跃,支持多种输入数据源和多种输出数据源。一开始,Elasticsearch 只是作为其中一个输出的存储,主要用于日志数据的存储。21二、导读不过,随着大家把日志发送到 Elasticsearch 之后,大家发现这家伙用起来很方便嘛,不仅能够存储大量的数据,水平伸缩还很方便。更关键的是,你能够很方便地把数据找出来,也就是进行全文搜索。全文搜索在日志分析里面是非常基础的一个功能,通过一个关键字就能定位具体的详细日志,相比存放到关系型数据库和普通的文件存储,Elasticsearch 优势非常明显。于是 Logstash 搭

44、配 Elasticsearch 变得很受欢迎。Kibana 的故事不过 Logstash 自带的 UI 查询日志的界面有点简陋,于是有一个叫作 Rashid Khan 的运维工程师表示完全忍不了了,用 PHP 写了一个叫作 Kibana 的程序,一个更好看和更好用的前端界面。PHP 写完一版,他又用 Ruby 写一版,后面又用 AngularJS 写了一版,不仅有日志的搜索和查看,还加上了一些统计展示功能。Kibana 的名字其实是俩个水果的名字的组合(Kiwi+Banana)。张飞听到这里:“工作不饱和啊这家伙”。孔明瞪了他一眼,继续说道。这个时候,Elasticsearch 已经有 Fac

45、et 概念,也就是分面统计(注:1.0 之后推出了Aggregation 来代替 Facet),可以对数据里面的某个字段进行单个维度的统计,支持多种统计类型。比如,TermFacet 可以计算字段里面某些值出现了多少次;Histogram Facet 还可以按时间区间进行汇总统计等。这些统计功能在前端 UI 就可以被利用起来,展示一些饼图、时间曲线等等,在运维的分析里面自然也都是需要的。慢慢的 Kibana 越做越复杂,支持的功能越来越多,Kibana 3 变得流行起来。于是乎,ELK 横空出世(Elasticsearch、Logstash 和 Kibana 这三个产品的首字母缩写),风靡了整

46、个运维界。故事讲到这里,相信你们对于 Elasticsearch 就有了一个大概的认识,可以用它做搜索,也可以用它做日志。”22二、导读张飞点点头,“还是相当的强悍嘛。”Elastic Stack 平台的魅力“不过,这还没完。”诸葛亮吞了吞口水,继续说。“Elastic 后面又引入了 Beats 家族。这是一系列非常轻量级的数据收集端,我给你介绍几个比较典型的,比如:Packetbeat可以实时监听网卡流量,并实时解析网络协议数据,可用来做 NPM 网络数据分析;Metricbeat可以用来收集服务器,以及服务器上部署的应用服务的各项监控指标数据,这样就可以替代Zabbix 等传统的监控软件,

47、来做服务器的性能指标分析;Auditbeat可以实时收集服务器的行为事件,用于安全方面的入侵检测和安全日志审计分析;Winlogbeat用于 Windows 平台的事件日志收集;Filebeat用于日志文件的收集等。Elasticsearch、Logstash、Kibana、Beats,这几个放在一起,就叫作 Elastic Stack。如今,Elastic 的版图越来越大,前年,Elastic 收购 Opbeat,开源了业界第一个完整的 APM解决方案,通过探针可以实现无侵入的代码级别的应用性能监控;去年 7 月又收购了代码搜索Insight.IO,后续可以实现代码级别的语义检索。今年又收购

48、了一个做终端安全的厂商Endgame。这样 Elastic Stack 这一个平台就可以同时做到:23二、导读日志分析性能指标分析安全日志分析APM 应用性能分析NPM 网络性能分析网站站内搜索企业级搜索代码搜索实时 BI 业务分析SIEM 解决方案终端设备安全.试想一下:在一个风和日丽的下午,你手机上收到一条告警短信,于是点击链接,打开 Kibana 的监控仪表盘,发现某台服务器的 CPU 达到 100%了。于是,你顺手点击过滤这台服务器的所有相关信息,可以看到相关的日志显示,是这台服务器上面部署的某一个业务服务的 QPS 有显著下降,然后过滤到这个业务的日志,发现有很多异常的日志信息,前端

49、 Nginx 代理日志还显示有很多请求被拒绝,看样子是后端的微服务处理能力达到瓶颈。这个时候,继续点击 APM 的分析面板,切换到事务和会话分析界面,看到有很多数据库链接处于开启状态。你点击查看调用代码,立马就找到了性能瓶颈的原因,原来是某个类的某个方法调用 MySQL 却没有及时释放链接造成了泄露,于是修改这行代码,提交上线,问题解决。然后,你可以若无其事地继续浏览相亲网站啦。尽管这是一个假想的例子,但是可以看到,基于 Elastic Stack,你可以覆盖一整套完整的,从全局性能监控到具体代码级别的排障和解决问题的过程,并且使用起来要比很多现有的方案24二、导读更加高效和便捷。好了,现在你

50、们是否对 Elasticsearch 已经有了一个初步的了解呢?是不是也有跃跃欲试的打算?”刘备点点头:“今天来先生这里真的是收获不少,之前多有冒犯,还请多多包涵啊。”关羽也说:“大哥,明天我就和三弟开始研究 Elasticsearch,争取早日改造好咱们的网站。”“刚说的相亲网站要不也发我一下”,张飞连忙问道。刘备没好气白了一眼张飞。“天色已晚,告辞了!”刘备三人作别孔明,各自高兴的回家了。“慢走不送,有空来喝茶啊。”孔明抹了一把额头,总算送走这仨了,恐怕从此江湖上估计要不平静喽。三、产品能力阿里云 Elasticsearch 支持本书所需的学习环境,2C4G 3 节点 1 元试用 30 天

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 研究报告 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服