新書推薦:
《
新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册)
》
售價:HK$
173.8
《
我从何来:自我的心理学探问
》
售價:HK$
119.9
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:HK$
85.8
《
送你一匹马(“我不求深刻,只求简单。”看三毛如何拒绝内耗,为自己而活)
》
售價:HK$
64.9
《
秦汉史讲义
》
售價:HK$
151.8
《
万千心理·我的精神分析之道:复杂的俄狄浦斯及其他议题
》
售價:HK$
104.5
《
荷马:伊利亚特(英文)-西方人文经典影印21
》
售價:HK$
107.8
《
我的心理医生是只猫
》
售價:HK$
49.5
|
編輯推薦: |
(1)作者专业实力强劲:铭毅天下有10多年开发工作经验,7年深耕Elastic Stack,博客累计阅读量超1000万,主导过PB级数据存储与检索系统项目,累计项目经费超千万。(1)众多Elastic大咖力荐:Elastic创始人Shay Banon、Elastic中文社区创始人Medcl、Wood大叔、张超、魏子珺等15位专家领衔推荐(2)覆盖认证考试考点:作者拥有多年Elasticsearch培训及咨询经验,并成功指导近200人通过认证考试,并将专家认证考试全部考点融入本书,有效提高应试能力。(3)内容体系完善:围绕Elasticsearch展开,覆盖基础知识、关联技术、核心能力及最佳实践,实战知识库检索系统、大数据可视化系统、日志系统等业务场景,并添加大量图解内容,使核心知识点更易被理解和吸收。(4)实战性强:融入作者多年Elastic Stack实战开发、咨询经验,以及4年间与来自全球数百家企业的近2000名Elastic爱好者的实战经验,深呈现高质量实战内容。
|
內容簡介: |
这是一本关于Elasticsearch技术实战的教程,全面覆盖了Elastic Stack技术体系知识,旨在帮助读者深入了解Elasticsearch的核心技术和应用场景,同时掌握分布式搜索与分析引擎的设计思想和实现原理。
|
關於作者: |
杨昌玉(铭毅天下)10多年工作经验的高级工程师,擅长大数据存储和检索。曾任职于上市公司、科研院所等,主导过PB级数据存储与检索系统项目,拥有多年Elasticsearch培训及咨询经验。Elastic认证专家、Elasticsearch中国合作培训讲师、Elasticsearch 中文社区2018年、2023年杰出贡献奖(排名Top5)获得者、阿里云MVP(大数据领域最有价值专家)、CSDN博客专家(排名Top150)、CSDN 2020年度优秀创作者。博客累计阅读量超1000万,并被阿里云、腾讯云、华为云、360doc、51CTO等知名媒体平台全量转载,在CSDN 2013年及2016年的博客征文大赛中获特等奖。“死磕Elasticsearch”知识星球发起人,拥有近2000名付费用户。“铭毅天下Elasticsearch”公众号及博客总计拥有近5万名关注者。成功指导近200人通过Elastic认证专家考试。
|
目錄:
|
目 录Contents赞 誉前 言第一部分 Elastic Stack全局概览第1章 Elastic Stack全景 21.1 Elasticsearch的过去、现在和未来 31.1.1 Elasticsearch的过去 31.1.2 Elasticsearch的现在 51.1.3 Elasticsearch的未来 61.2 Elastic Stack组成 71.2.1 Elasticsearch概览 71.2.2 Logstash概览 81.2.3 Kibana概览 81.2.4 Beats概览 91.3 Elastic Stack的应用场景 91.3.1 全文检索场景 101.3.2 日志分析场景 101.3.3 商业智能场景 101.4 Elasticsearch竞品分析 101.4.1 Apache Solr 111.4.2 Splunk 111.4.3 OpenSearch 111.4.4 Doris 121.4.5 ClickHouse 121.5 本章小结 13第2章 Elasticsearch基础知识 142.1 搜索引擎基础知识 142.1.1 搜索引擎的目标 142.1.2 搜索引擎的核心要求 152.1.3 检索质量的评价指标 152.1.4 倒排索引 162.1.5 全文检索 182.2 Elasticsearch的核心概念 192.2.1 集群 202.2.2 节点 202.2.3 索引 202.2.4 分片 202.2.5 副本 212.2.6 文档 212.2.7 字段 222.2.8 映射 222.2.9 分词 232.3 本章小结 23第3章 Elasticsearch集群部署 253.1 Elastic Stack集群部署基础知识 253.1.1 集群部署平台及操作系统的选型 263.1.2 集群部署的主要步骤 263.1.3 Elasticsearch集群堆内存设置 273.1.4 Elasticsearch集群节点角色划分 293.1.5 Elasticsearch集群核心配置解读 353.2 Elasticsearch单节点集群与Kibana的极简部署 373.2.1 Elasticsearch单节点集群极简部署 373.2.2 Kibana极简部署 403.3 Elasticsearch单节点集群与Kibana的自定义证书部署 423.3.1 Elasticsearch单节点集群自定义证书部署 433.3.2 Kibana自定义证书部署 443.4 Elasticsearch多节点集群部署 463.5 Kibana自带样例数据导入 473.6 本章小结 48第二部分 Elasticsearch核心技术第4章 Elasticsearch索引 524.1 索引的定义 524.1.1 类比关系型数据库看索引 524.1.2 索引定义的实现 534.2 索引操作 564.2.1 新增/创建索引 564.2.2 删除索引 574.2.3 修改索引 574.2.4 查询索引 584.3 索引别名 584.3.1 别名的定义 584.3.2 别名的实现 594.3.3 别名应用的常见问题 604.4 索引模板 624.4.1 索引模板的定义 624.4.2 索引模板的基础操作 644.4.3 动态模板实战 644.4.4 索引模板应用的常见问题 664.5 本章小结 66第5章 Elasticsearch映射 685.1 映射的定义 685.1.1 认识映射 685.1.2 元字段 695.1.3 数据类型 695.1.4 映射类型 725.1.5 实战:映射创建后还可以更新吗 755.2 Nested类型及应用 775.2.1 Nested类型的定义 775.2.2 Nested类型的操作 815.3 Join类型及应用 835.3.1 认识Join类型 835.3.2 Join类型基础实战 835.3.3 Join类型一对多实战 865.4 Flattened类型及应用 895.4.1 Elasticsearch字段膨胀问题 895.4.2 Flattened类型的产生背景 905.4.3 Flattened类型实战 915.4.4 Flattened类型的不足 945.5 多表关联设计 945.5.1 Elasticsearch多表关联方案 945.5.2 多表关联方案对比 955.6 内部数据结构解读 965.6.1 数据存储的基础知识 965.6.2 倒排索引 965.6.3 正排索引 975.6.4 fielddata 985.6.5 _source字段 1005.6.6 store字段 1005.7 详解null_value 1025.7.1 null_value的含义 1035.7.2 null_value使用的注意事项 1045.7.3 支持null_value的核心字段 1055.8 本章小结 106第6章 Elasticsearch分词 1086.1 认识分词 1086.2 为什么需要分词 1096.3 分词发生的阶段 1096.3.1 写入数据阶段 1096.3.2 执行检索阶段 1096.4 分词器的组成 1106.4.1 字符过滤 1106.4.2 文本切分为分词 1116.4.3 分词后再过滤 1116.5 分词器的分类 1126.6 特定业务场景的自定义分词案例 1136.6.1 实战问题拆解 1136.6.2 实现方案 1146.6.3 结果验证 1156.7 Ngram自定义分词案例 1166.7.1 实战问题拆解 1176.7.2 Ngram分词器定义 1186.7.3 Ngram分词实战 1196.7.4 Ngram分词选型的注意事项 1216.8 本章小结 121第7章 Elasticsearch预处理 1237.1 预处理定义 1237.2 预处理器分类 1257.3 预处理实现 1257.4 预处理实战案例 1267.4.1 字符串切分预处理 1267.4.2 字符串转JSON格式 1277.4.3 列表操作 1287.4.4 enrich预处理 1297.4.5 预处理实战的常见问题 1377.5 本章小结 138第8章 Elasticsearch文档 1398.1 新增文档 1408.1.1 文档ID 1408.1.2 新增单个文档 1408.1.3 新增批量文档 1428.2 删除文档 1438.2.1 单个文档删除 1448.2.2 批量文档删除 1448.3 修改/更新文档 1458.3.1 更新文档的前置条件 1458.3.2 单个文档部分更新 1468.3.3 全部文档更新 1488.3.4 批量文档更新 1498.3.5 取消更新 1508.4 reindex:迁移文档 1518.4.1 reindex操作的背景及定义 1518.4.2 同集群索引之间的全量数据迁移 1528.4.3 同集群索引之间基于特定条件的数据迁移 1528.4.4 不同集群索引之间的数据迁移 1548.4.5 查看及取消reindex任务 1548.4.6 业务零掉线情况下的数据迁移 1558.5 本章小结 155第9章 Elasticsearch脚本 1569.1 认识Elasticsearch脚本 1569.1.1 Elasticsearch脚本的背景 1569.1.2 Painless脚本语言简介 1579.2 Elasticsearch脚本的应用场景和模板 1589.3 Elasticsearch脚本实战 1589.3.1 自定义字段 1589.3.2 自定义评分 1599.3.3 自定义更新 1599.3.4 自定义reindex 1609.3.5 自定义聚合 1619.3.6 实战常见问题 1629.4 本章小结 163第10章 Elasticsearch检索 16410.1 检索选型指南 16410.1.1 Elasticsearch检索分类 16510.1.2 精准匹配检索和全文检索的本质区别 16710.1.3 精准匹配检索详解 17010.1.4 全文检索类型详解 17910.1.5 组合检索类型详解 18310.1.6 query和filter的区别 18410.2 高亮、排序和分页 18610.2.1 高亮 18610.2.2 排序 18810.2.3 分页 19010.3 自定义评分 19110.3.1 搜索结果相关度与自定义评分的关系 19110.3.2 控制Elasticsearch相关度 19210.3.3 计算相关度评分 19210.3.4 影响相关度评分的查询子句 19310.3.5 自定义评分定义 19310.4 检索模板 19910.4.1 检索模板基础知识 19910.4.2 检索模板实战问题及解决方案 20110.5 深度解读Elasticsearch分页查询 20610.5.1 from + size查询 20610.5.2 search_after查询 20910.5.3 scroll查询 21210.6 本章小结 214第11章 Elasticsearch聚合 21511.1 图解聚合 21511.1.1 数据源 21511.1.2 聚合分类 21611.1.3 聚合应用场景 22611.2 聚合后分页的新实现:组合聚合 22611.2.1 认识组合聚合 22711.2.2 组合聚合的应用场景 23011.2.3 组合聚合的核心功能 23011.2.4 利用组合聚合进行聚合后分页实战 23111.3 通过子聚合求解环比问题 23311.3.1 parent子聚合和sibling子聚合详解 23411.3.2 环比问题拆解 23711.3.3 环比问题求解实现 23711.3.4 bucket相关子聚合的常见问题 23911.4 Elasticsearch去重 24011.4.1 去重需求分析 24011.4.2 去重需求实现 24011.5 本章小结 243第12章 Elasticsearch集群 24512.1 冷热集群架构 24512.1.1 认识冷热集群架构 24512.1.2 冷热集群架构的应用场景 24612.1.3 冷热集群架构的优势 24712.1.4 冷热集群架构实战 24712.2 索引生命周期管理 24912.2.1 认识索引生命周期 24912.2.2 索引生命周期管理的历史演变 24912.2.3 索引生命周期管理的基础知识 25012.2.4 索引生命周期管理的核心概念 25512.2.5 索引生命周期管理实战:DSL命令行 25612.2.6 索引生命周期管理实战:Kibana图形化界面 25812.3 跨机房、跨机架部署 26112.3.1 跨机房、跨机架部署要求 26112.3.2 跨机房、跨机架部署实战 26212.4 集群/索引的备份与恢复 26412.4.1 常见的索引/集群的备份与恢复方案 26412.4.2 Elasticsearch快照和恢复功能 26512.4.3 elasticdump迁移 26812.5 快照生命周期管理 26912.5.1 认识快照生命周期 27012.5.2 快照生命周期管理实现 27012.5.3 恢复快照 27412.5.4 快照生命周期管理的常见命令 27512.5.5 通过Kibana图形化界面进行快照生命周期管理 27712.6 跨集群检索 27912.6.1 跨集群检索定义 27912.6.2 跨集群检索实战 27912.6.3 跨集群检索优势 28212.7 本章小结 282第13章 Elasticsearch安全 28413.1 集群安全基础 28413.1.1 Elasticsearch如何保障安全 28413.1.2 Elasticsearch X-Pack安全配置 28613.1.3 设置或重置账号和密码 28613.2 定义基于角色的访问控制 28713.3 如何安全使用Elasticsearch脚本 29013.3.1 Elasticsearch安全原则 29013.3.2 脚本类型细分 29013.3.3 脚本分级限制 29213.3.4 控制脚本的可用范围 29313.4 本章小结 293第14章 Elasticsearch运维 29514.1 Elasticsearch集群监控的维度及指标 29514.1.1 5个重要监控维度 29514.1.2 10个核心监控指标 30214.2 集群故障排查及修复指南 30214.2.1 集群健康状态的解读 30314.2.2 如何定位红色或黄色的索引 30314.3 运维及故障诊断的常用命令 30814.4 Elasticsearch监控指标可视化 31014.4.1 Elasticsearch监控的前置条件 31014.4.2 Metricbeat安装及Kibana可视化 31214.5 Elasticsearch日志 31714.5.1 Elasticsearch日志基础知识 31714.5.2 最低级别日志能否输出检索语句 31914.5.3 Elasticsearch slowlog的常见问题 31914.6 本章小结 322第三部分 Elasticsearch进阶指南第15章 Elasticsearch核心工作原理 32615.1 Elasticsearch文档版本的应用原理 32615.1.1 文档版本控制机制的产生背景 32615.1.2 Elasticsearch文档版本定义 32715.1.3 Elasticsearch文档版本冲突 32815.1.4 常见的并发控制策略 33115.1.5 如何解决或避免Elasticsearch文档版本冲突 33215.2 Elasticsearch文档更新/删除的原理 33615.2.1 更新/删除操作时文档版本号的变化 33715.2.2 文档删除、索引删除和文档更新的本质 33815.2.3 文档更新/删除的常见问题 33915.3 Elasticsearch写入的原理 34115.3.1 Elasticsearch写入的核心概念 34215.3.2 Elasticsearch写入的实现流程 34315.3.3 Elasticsearch refresh和flush操作 34415.4 Elasticsearch段合并的原理 34515.4.1 段的基础知识 34515.4.2 什么是段合并 34615.4.3 为什么要进行段合并 34615.4.4 段合并的潜在问题 34615.4.5 段合并问题的优化建议 34715.5 Elasticsearch检索的原理 34715.6 本章小结 349第16章 Elasticsearch性能优化 35016.1 Elasticsearch性能指标 35016.2 Elasticsearch通用的性能优化建议 35116.3 Elasticsearch写入优化 35716.3.1 写入优化建议 35716.3.2 写入过程监控 36016.4 Elasticsearch检索优化 36116.4.1 全量数据和大文档处理的优化建议 36116.4.2 数据建模层面的优化建议 36116.4.3 检索方法层面的优化建议 36316.4.4 性能优化的DSL命令行 36716.5 本章小结 370第17章 Elasticsearch实战“避坑”指南 37217.1 Elasticsearch分片 37217.1.1 常见分片问题 37217.1.2 分片大小如何影响性能 37317.1.3 分片及副本设置建议 37317.2 25个核心Elasticsearch默认值 37517.2.1 参数类型以及静态参数和动态参数的区别 37517.2.2 6个Elasticsearch集群级别参数的关键默认值 37617.2.3 7个Elasticsearch索引级别参数的关键默认值 37717.2.4 4个Elasticsearch映射级别参数的关键默认值 37917.2.5 8个其他关键默认值 38017.3 Elasticsearch线程池和队列 38117.3.1 线程池简介 38217.3.2 线程池类型 38317.3.3 线程池的基础知识 38317.3.4 队列的基础知识 38417.3.5 线程池实战问题及注意事项 38817.4 Elasticsearch热点线程 38917.4.1 热点线程简介 38917.4.2 热点线程支持的参数 38917.4.3 hot_threads API的应用原理 39017.4.4 hot_threads API的返回结果 39117.5 规划Elasticsearch集群规模和容量 39317.5.1 Elasticsearch基础架构 39317.5.2 维系Elasticsearch高性能的4种资源 39417.5.3 集群规模和容量的预估方法 39517.6 Elasticsearch Java客户端选型 39817.6.1 官方Elasticsearch Java客户端 39817.6.2 非官方Elasticsearch Java客户端 40217.6.3 如何进行Elasticsearch Java客户端选型 40417.7 Elasticsearch缓存 40417.7.1 Elasticsearch缓存分类 40417.7.2 查询与清理缓存 40817.8 Elasticsearch数据建模 40917.8.1 为什么要进行数据建模 40917.8.2 如何实现数据建模 41117.9 利用JMeter进行Elasticsearch性能测试 42017.9.1 Elasticsearch性能测试工具 42017.9.2 JMeter部署与启动 42117.9.3 关于JMeter性能测试的4点认知 42317.9.4 利用JMeter进行Elasticsearch 8.X性能测试 42417.9.5 JMeter性能测试与优化实战 42817.10 本章小结 431第四部分 Elasticsearch项目实战第18章 Elasticsearch知识库检索系统实战 43418.1 知识库检索系统的需求分析 43418.2 知识库检索系统的技术选型 43518.2.1 OpenOffice 43618.2.2 Tika 43718.2.3 Ingest Attachment 43818.2.4 FSCrawler 43918.2.5 Python Flask 43918.3 知识库检索系统的技术架构 44018.4 知识库检索系统的实现 44118.4.1 FSCrawler使用步骤详解 44118.4.2 系统实现效果展示 44318.4.3 数据统计可视化 44518.5 本章小结 446第19章 Elastic Stack大数据可视化系统实战 44719.1 大数据可视化系统的需求分析 44719.2 大数据可视化系统的技术架构 44719.3 大数据可视化系统的设计 44819.3.1 影评数据获取的可行性分析 44819.3.2 可分析的数据字段及其
|
內容試閱:
|
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部署等内容。
|
|