Preface
前言

为什么要写这本书

当今社会,人工智能(AI)和大数据技术日新月异,大量数据的产生、分析和应用已经成为各个行业及各个领域的核心工作。对TB甚至PB级别的大数据进行处理和检索的业务需求不断增加,使得企业及个人对高效的数据处理和检索工具的需求越来越迫切。Elastic Stack提供了一系列强大而灵活的数据分析和检索工具,受到广泛关注。

然而,在市场上现有的关于Elastic Stack的书籍中,笔者发现了一些不足之处。首先,很多国外翻译书籍过度依赖旧版本Elasticsearch,如Elasticsearch 1.X、2.X、5.X等,导致部分案例不再适用,给读者的实际操作带来困难。其次,无论国内还是国外的书籍,都过于关注API,而忽略了实战场景和原理解读,使得读者缺乏对原理的深刻理解,遇到问题时无法独立思考解决,也难以建立完整的知识体系。这类书只能“授人以鱼”,不能“授人以渔”。

与此同时,尽管借助近期热门的ChatGPT等大模型AI工具,我们可以在一定程度上提高对Elasticsearch的学习效率,但这些工具仍存在局限,例如:知识更新滞后,无法及时提供最新版本Elasticsearch的相关知识;提供的内容体系不够系统和完整;基于实战经验的内容不足,难以提供针对实际问题的解决方案;交互性有限,不能有效地解答切身问题;缺乏个性化的学习路径。

本书旨在弥补这些书籍和工具的能力欠缺,实现以下目标。

❑以实战为核心:结合项目和产品开发实战场景,透彻讲解概念,深入解读相关原理。

❑建立完整知识体系:对技术点进行深入剖析和旁征博引,以实现更高级的“授人以渔”的目标。

❑适用于各层次读者:在提高Elasticsearch初学者的认知的同时满足中高级读者的进阶需求。

此外,本书将关注主流的Elasticsearch 8.X版本,确保读者在实际操作中不会遇到版本上的困难。

从宏观和社会责任角度出发,本书力求解决行业现有问题,为Elastic Stack技术的普及和应用贡献力量。

读者对象

本书面向不同层次的Elastic Stack学习者和从业者,为各类读者提供翔实、丰富的内容。以下是本书的主要读者对象。

Elastic Stack初学者、初级开发/运维工程师

本书致力于帮助初学者及初级工程师全面掌握Elastic Stack尤其是Elasticsearch的技术体系。本书详尽介绍了Elasticsearch的核心概念、应用场景以及问题解决能力,通过阅读本书,初级工程师将能迅速上手部署日志分析或全文检索环境,并应对开发和运维过程中可能遇到的挑战。

中级开发/运维工程师

具备一定Elastic Stack基础的中级工程师,可通过本书巩固基础知识,并深入探究Elasticsearch的底层原理。在项目或产品实战中,中级工程师可借助本书加强自身认知,规避实际开发和运维过程中不必要的弯路。同时,本书全面覆盖了Elasticsearch认证考试的关键考点,有助于中级开发/运维工程师顺利通过Elastic认证(ECE认证)专家考试。

Elastic Stack发烧友、资深开发/运维工程师和架构师

本书深入剖析了Elasticsearch的底层架构、原理及最佳实践,以帮助资深工程师和架构师更高效地运用所学知识,提升项目实践能力。另外,通过本书,这部分读者能将理论知识与实战经验融会贯通,更好地应用于实际项目之中。

总之,本书旨在为各阶段的Elastic Stack学习者和实践者提供专业、系统、实用的内容,以帮助他们提升技能水平、拓宽知识视野,为进一步的学习和应用奠定坚实基础。

本书特色

1)融入丰富的实战经验:本书融入了笔者8年以上的Elastic Stack实战开发、咨询经验(累计项目经费超过1000万元),以及4年间来自全球数百家企业的近2000名Elastic爱好者的实战经验,深入探讨技术本质,呈现了有用、有价值的高质量内容。

2)辅以大量的图解:在讲解透彻的前提下,本书添加了大量图解内容,使核心知识点更易被读者理解和吸收。

3)全面覆盖Elastic认证考试的考点:本书覆盖了Elastic认证考试的所有考点,且基于笔者所积累的宝贵考试经验编写而成(笔者已成功带领近150位工程师通过Elastic认证专家考试,占国内总通过人数的一半以上),能有效助力各层次读者建立Elasticsearch体系化认知。

4)提供实战项目:本书涵盖3个实战项目,以实践巩固基础原理,助力读者迅速将技能应用到企业实战环境中。

5)作者资历深厚:作者拥有多年架构、开发实战经验,长期活跃于Elastic中文社区、CSDN等平台,具有累计阅读量超1000万博客和近2000人的付费社群,在行业内具有较高的知名度和影响力。

如何阅读本书

本书分为四大部分,共20章,全面讲解了Elastic Stack技术体系,深入剖析了Elasticsearch的基础概念、核心技术、进阶知识以及实战案例,让读者真正掌握其原理及实现。

第一部分 Elastic Stack全局概览

这一部分(第1~3章)对Elastic Stack技术体系进行全局性探讨,涉及Elasticsearch的演进历程、Elastic Stack的各个组成部分及主要应用场景,并且将Elasticsearch与其主要竞争对手进行比较。然后,讨论搜索引擎的基础知识,并初步探索了Elasticsearch的核心概念,如集群、节点、索引等。最后,详细介绍Elasticsearch单节点、多节点集群部署,以及Kibana部署等内容。

第二部分 Elasticsearch核心技术

这一部分(第4~14章)从技术层面展开讲解,深入解读了索引、映射、分词、数据预处理、文档、脚本、检索、聚合、集群、安全和运维的核心技术。

第三部分 Elasticsearch进阶指南

这一部分(第15~17章)是进阶知识,包括Elasticsearch各关键操作的原理、性能优化方案以及实战“避坑”指南。首先,讲解文档版本冲突及并发控制策略,以及更新/删除、写入、段合并、检索等操作的实现;其次,提供通用、写入、检索3个维度的性能优化建议;最后,对实战问题及解决技巧进行解读,涉及分片、线程池和队列、热点线程、集群规划、客户端选型、缓存、数据建模、性能测试等话题,为企业级实战保驾护航。

第四部分 Elasticsearch项目实战

这一部分(第18~20章)融合前面三部分的知识和技能,带领读者将其应用于Elasticsearch三大核心业务场景——知识库检索系统、大数据可视化系统、日志系统。

为了使读者获得最佳的学习效果,有效提升认知水平,建议遵循以下步骤阅读。

1)预备知识:确保具备基本的计算机网络、编程语言和数据库知识,以便更好地理解本书内容。

2)明确目的:在开始阅读本书前明确阅读目的,无论学习Elasticsearch基本原理和操作,还是解决实际项目中的问题,目的明确都有助于实现针对性阅读。

3)阅读策略:本书内容按照“基本概念和功能——深入剖析原理和实战场景——复杂技术点和最佳实践”的逻辑安排,读者既可以按照章节顺序阅读,也可以针对性地学习某章。

4)实践操作:结合前面的理论知识,跟随书中示例进行实际操作,巩固所学知识。

5)结合官方文档:参考Elasticsearch官方文档获取最新、最准确的信息,以便更好地理解知识点并掌握最新动态。

6)多做笔记:记录关键知识点、实战技巧及思考和疑问,以便回顾和巩固所学内容。

7)刻意练习:将所学内容应用到实际场景中以提高技能水平。

8)总结回顾:定期回顾和总结所学知识,加深记忆和理解。

9)交流和分享:加入Elastic Stack社区、论坛或微信群,与其他读者或专家进行交流和讨论,取长补短。主动分享学习心得和经验,一方面获得更多反馈和启发,另一方面通过“输出倒逼输入”“向上学、向下帮”,快速提升自己。

遵循上述建议,你将更有效地阅读本书,从而提升Elastic Stack专业技能。

勘误和支持

本书中案例的完整源代码均可在该网址中获取:https://github.com/mingyitianxia/elasticsearch-made-easy。

若读者在阅读过程中发现错误或有疑问,可以通过以下联系方式进行反馈。

❑公众号:铭毅天下Elasticsearch

❑微信号:elastic6

❑邮箱:ycy360@163.com

致谢

衷心感谢所有在本书的创作过程中提供帮助和支持的朋友。

感谢认真负责的审稿人,他们的细致评审确保了本书内容的准确性和可靠性;感谢热心的技术顾问,他们在本书的技术难题和最佳实践方面提供了有力的支持。

由衷感谢我的爱人张霞女士,正因为她的协助,我才能有充裕的时间整理书稿。深切感谢我的父母,我能从一个贫困的小山村走出来,离不开他们对教育的重视。同时,真诚感谢我的研究生导师刘海燕教授,“一朝沐杏雨,一生念师恩”,恩师不仅教授我知识,更教会我做人的道理。

特别感谢Elasticsearch社区的先驱者,如Medcl(曾勇)、Wood大叔(吴晓刚)、张超、魏子珺、吴斌、阮一鸣、魏彬、李猛、李捷、杨振涛、付磊、周钰、吴荣、陈晨、金多安等。在本书的创作过程中,他们的关心和指导给予了我源源不断的动力。感谢“死磕Elasticsearch”知识星球的近2000名“球友”和“铭毅天下Elasticsearch”公众号的近50 000名关注者。他们的问题讨论和经验分享为本书提供了宝贵的灵感。

感谢优秀的同事刘衍琦、张晓东,与他们的交流让我灵感迸发、受益匪浅。

本书写作时参考了Elastic官方文档、Elastic源码、张超的《Elasticsearch源码解析与优化实战》、张俊林的《这就是搜索引擎》,感谢相关作者及贡献者。

最后,向所有关注和支持本书的读者表示诚挚的谢意,正因为有他们的期待,本书才得以顺利完成。在未来的学习和实践过程中,希望本书能为读者提供帮助,也期待读者的反馈和建议能帮助我不断迭代本书。让我们共同进步,为Elastic Stack领域的发展做出贡献。

谨以此书献给我的女儿杨言溪,她的健康、快乐是我进步的原动力,期望本书能随她一同成长!

杨昌玉(铭毅天下)

2023年10月25日