目录
前言
Elasticsearch实际应用
关于《Elasticsearch实战(第2版)》
编辑推荐
内容简介
作者简介
图书目录
媒体评论
《Elasticsearch实战(第2版)》全书速览
结束语
前言
在当今数据爆炸的时代,企业面临着从海量数据中快速提取有价值信息的巨大挑战。Elasticsearch作为开源搜索引擎中的佼佼者,凭借其强大的全文搜索能力、实时分析能力、高可用性及可扩展性,在大数据搜索与分析领域脱颖而出,成为许多企业的首选。Elasticsearch不仅能够处理文本、数值、地理空间等多种类型的数据,还通过其分布式架构和灵活的索引管理功能,能够轻松应对大规模数据集,优化搜索性能,并支持复杂的业务需求。因此,Elasticsearch不仅在互联网、电商、金融等领域得到广泛应用,还在制造业、医疗保健、物流等多个行业中崭露头角。
Elasticsearch实际应用
互联网大厂对Elasticsearch技术的实战需求广泛,涵盖了日志管理、全文搜索、实时数据分析、安全监控、推荐系统、性能优化、数据可视化、多租户支持、高可用与扩展性、数据备份与恢复等多个方面,这里分享几个具体的落地案例:
- 腾讯在内部多个场景中大规模使用Elasticsearch,通过执行引擎优化、存储重构等技术方案,对原生Elasticsearch内核进行了深度优化,单集群规模达到千级节点、万亿级数据吞吐。
- 京东到家利用Elasticsearch处理海量订单数据,优化查询性能,其订单中心ES集群存储达到10亿个文档,日均查询量达到5亿次。
- 携程在酒店订单和机票订单管理中,通过Elasticsearch建立实时索引,优化查询性能,提升酒店订单和机票系统的查询效率。
- 字节跳动基于Elasticsearch构建高性能的全文检索系统,支持业务的快速扩展,其专门招聘Elasticsearch研发工程师,负责Elasticsearch平台建设,构建稳定高效的全文检索存储和查询系统,推进存储计算分离等架构升级,以支持其复杂的内容推荐和搜索功能。
- 除此之外,滴滴采用多集群架构优化资源管理,使用Elasticsearch进行日志分析和实时监控,通过Sink和Gateway服务优化数据处理流程。而华为在Elasticsearch内核开发、索引优化等方面有大量需求。
关于《Elasticsearch实战(第2版)》
接下来给大家推荐一本关于Kubernetes的书籍,这是一本深度剖析Elasticsearch原理与实战应用的精品图书,一经上市就登上了当当“计算机与互联网”图书排行榜前列。本书从Elasticsearch的核心架构讲起,深入浅出地介绍了其在大数据搜索、日志分析以及实时数据处理等场景下的实战技巧,能够帮助企业在海量数据管理和高效检索方面游刃有余。无论是初学者还是有一定基础的开发者,都能从中获得宝贵的知识和实用的技能,助力你在数据处理领域更进一步!
另外,关注本文博主,点赞+收藏本文,且在本文评论区评论“入手Elasticsearch”,将选取三名幸运读者送出纸质版《Elasticsearch实战(第2版)》一本,截止时间:2025.02.28。入手《Elasticsearch实战(第2版)》传送门:https://item.jd.com/10135723373795.html或者《Elasticsearch实战(第2版)》([英]马杜苏丹·孔达(Madhusudhan Konda))【简介_书评_在线阅读】 - 当当图书,个人觉得这本书非常的不错,是一本不可多得的好书,值得拥有去学习。
编辑推荐
使用Elasticsearch和Kibana打造专业级的搜索引擎!
这是一本注重实践的书,书中深入探讨了Elasticsearch的整体架构,揭示了基础设施模式,并详细介绍了众多Elasticsearch API的搜索功能和分析功能。
本书指导读者使用Elasticsearch 8为网站和应用添加现代搜索功能,让读者可以从安装和配置集群的基础知识快速进阶到索引文档、高级聚合,再到将Elasticsearch投入生产。将设计出色的搜索体验的技术细节与技巧巧妙地结合是本书的一大特点,这一特点必将使读者对本书爱不释手。
本书主要内容:
● 理解搜索架构。
● 全文搜索查询和词项级搜索查询。
● 分析和聚合。
● Kibana中的高级可视化。
● 配置、扩展和调优集群。
本书适合熟悉脚本和命令行应用的应用开发人员阅读。
内容简介
本书全面深入地介绍Elasticsearch的核心功能及其工作机制。本书由浅入深,从Elasticsearch的基本用法和架构原理,以及倒排索引、分片、节点角色和相关性等核心概念讲起;然后深入探讨数据处理和索引管理,涵盖映射模式、数据类型、文本分析、索引模板;接着详细介绍词项级搜索、全文搜索、复合查询和高级搜索等Elasticsearch的搜索功能,并深入讲解聚合;最后聚焦生产环境中的Elasticsearch管理和性能优化。本书特别注重实践,提供了大量的代码示例,涵盖从基础查询到复杂功能的各种应用场景。与第1版相比,这一版更新并补充了许多新的功能点,如索引生命周期管理、可组合索引模板机制、地理位置查询等。
本书是使用Elasticsearch开发全功能搜索引擎的实践指南,适合刚接触Elasticsearch领域、希望了解其基本工作原理的开发者、架构师、分析师、管理者、产品负责人或希望利用Elasticsearch进行实时数据分析和处理的数据科学家阅读,也适合在实际项目中遇到挑战的资深工程师及学习大数据技术并对搜索技术感兴趣的学生和研究人员阅读。
作者简介
[英]马杜苏丹·孔达(Madhusudhan Konda)是全栈首席工程师、架构师,也是技术导师和会议演讲者。他还是一位颇具盛名的技术图书作者,他关于Java、Spring和Hibernate生态系统的书广受读者欢迎。此外,他还提供有关Elasticsearch和Elastic Stack的在线培训。
图书目录
第 1章 概述 1
1.1 一个好的搜索引擎是怎样的 1
1.2 搜索已成为新常态 2
1.2.1 结构化数据与非结构化(全文)数据 3
1.2.2 数据库支持的搜索 4
1.2.3 数据库与搜索引擎 5
1.3 现代搜索引擎 6
1.3.1 功能 6
1.3.2 流行的搜索引擎 7
1.4 Elasticsearch概述 7
1.4.1 核心领域 8
1.4.2 Elastic Stack 9
1.4.3 Elasticsearch的使用场景 10
1.4.4 不适合Elasticsearch的使用场景 11
1.4.5 误解 12
1.5 业界案例 13
1.6 生成式人工智能与现代搜索 14
1.7 小结 16
第 2章 开始使用 17
2.1 往Elasticsearch中导入数据 18
2.1.1 在线书店 18
2.1.2 索引文档 19
2.1.3 索引第 一个文档 22
2.1.4 索引更多文档 25
2.2 检索数据 26
2.2.1 计算文档数量 26
2.2.2 检索文档 27
2.3 全文搜索 31
2.3.1 匹配查询:按作者找书 31
2.3.2 带有AND运算符的匹配查询 32
2.3.3 使用_bulk API索引文档 34
2.3.4 多字段搜索 35
2.3.5 提升结果 36
2.3.6 搜索短语 36
2.3.7 处理缺失单词的短语 38
2.3.8 处理拼写错误 38
2.4 词项级查询 39
2.4.1 term查询 40
2.4.2 range查询 41
2.5 复合查询 41
2.5.1 bool查询 42
2.5.2 must子句 43
2.5.3 must_not子句 44
2.5.4 should子句 44
2.5.5 filter子句 45
2.6 聚合 46
2.6.1 指标聚合 47
2.6.2 桶聚合 49
2.7 小结 52
第3章 架构 53
3.1 概述 54
3.1.1 数据导入 54
3.1.2 数据处理 55
3.1.3 数据输出 58
3.2 基本组件 58
3.2.1 文档 58
3.2.2 索引 62
3.2.3 数据流 63
3.2.4 分片和副本 65
3.2.5 节点和集群 70
3.3 倒排索引 75
3.4 相关性 77
3.4.1 相关性分数 77
3.4.2 相关性(相似性)算法 78
3.5 路由算法 82
3.6 扩展 83
3.6.1 纵向扩展(垂直扩展) 83
3.6.2 横向扩展(水平扩展) 84
3.7 小结 84
第4章 映射 85
4.1 概述 86
4.1.1 映射定义 86
4.1.2 首次索引文档 87
4.2 动态映射 89
4.2.1 推断类型的机制 90
4.2.2 动态映射的局限性 91
4.3 显式映射 93
4.3.1 使用索引API定义映射 94
4.3.2 使用映射API更新模式 95
4.3.3 不允许修改现有字段 97
4.3.4 类型强制转换 98
4.4 数据类型 98
4.5 核心数据类型 100
4.5.1 文本数据类型 100
4.5.2 关键词数据类型 104
4.5.3 日期数据类型 106
4.5.4 数值数据类型 108
4.5.5 布尔数据类型 109
4.5.6 范围数据类型 110
4.5.7 IP地址数据类型 111
4.6 高级数据类型 112
4.6.1 geo_point数据类型 112
4.6.2 object数据类型 114
4.6.3 nested数据类型 118
4.6.4 flattened数据类型 120
4.6.5 join数据类型 122
4.6.6 search_as_you_type数据类型 124
4.7 拥有多种数据类型的字段 126
4.8 小结 127
第5章 处理文档 128
5.1 索引文档 129
5.1.1 文档API 129
5.1.2 索引机制 135
5.1.3 自定义刷新过程 137
5.2 检索文档 138
5.2.1 使用单文档API 139
5.2.2 检索多个文档 140
5.2.3 ids查询 141
5.3 操纵响应 142
5.3.1 从响应中移除元数据 142
5.3.2 抑制源数据 143
5.3.3 包含或排除字段 144
5.4 更新文档 146
5.4.1 文档更新机制 146
5.4.2 _update API 147
5.4.3 脚本更新 148
5.4.4 替换文档 152
5.4.5 更新插入 153
5.4.6 将更新视为更新插入 154
5.4.7 通过查询更新 155
5.5 删除文档 156
5.5.1 通过ID删除 156
5.5.2 通过查询删除 156
5.5.3 通过range查询删除 157
5.5.4 删除所有文档 158
5.6 批量处理文档 159
5.6.1 _bulk API的格式 159
5.6.2 批量索引文档 160
5.6.3 批量请求处理多个索引和操作 161
5.6.4 使用cURL执行批量请求 162
5.7 重新索引文档 163
5.8 小结 164
第6章 索引操作 165
6.1 概述 166
6.2 创建索引 166
6.2.1 隐式创建索引(自动创建) 167
6.2.2 显式创建索引(手动创建) 170
6.2.3 自定义索引设置 170
6.2.4 索引映射 172
6.2.5 索引别名 173
6.3 读取索引 177
6.3.1 读取公开索引 177
6.3.2 读取隐藏索引 178
6.4 删除索引 179
6.4.1 删除多个索引 179
6.4.2 仅删除别名 180
6.5 关闭索引和打开索引 180
6.5.1 关闭索引 180
6.5.2 打开索引 181
6.6 索引模板 182
6.6.1 创建可组合(索引)模板 183
6.6.2 创建组件模板 184
6.7 监控和管理索引 186
6.7.1 索引的统计信息 186
6.7.2 多个索引的统计信息 188
6.8 高级操作 189
6.8.1 拆分索引 189
6.8.2 缩小索引 191
6.8.3 滚动更新索引别名 193
6.9 索引生命周期管理 195
6.9.1 索引生命周期 196
6.9.2 手动管理索引生命周期 197
6.9.3 带有滚动机制的索引生命周期 199
6.10 小结 202
第7章 文本分析 203
7.1 概述 204
7.1.1 查询非结构化数据 204
7.1.2 分析器来拯救 205
7.2 分析器模块 205
7.2.1 分词 205
7.2.2 归一化 206
7.2.3 分析器的结构 206
7.2.4 测试分析器 208
7.3 内置分析器 209
7.3.1 standard分析器 210
7.3.2 simple分析器 216
7.3.3 whitespace分析器 217
7.3.4 keyword分析器 218
7.3.5 fingerprint分析器 219
7.3.6 pattern分析器 220
7.3.7 语言分析器 221
7.4 自定义分析器 224
7.5 指定分析器 227
7.5.1 为索引指定分析器 227
7.5.2 为搜索指定分析器 228
7.6 字符过滤器 230
7.6.1 html_strip字符过滤器 231
7.6.2 mapping字符过滤器 232
7.6.3 pattern_replace字符过滤器 234
7.7 分词器 235
7.7.1 standard分词器 235
7.7.2 ngram分词器和edge_ngram分词器 236
7.7.3 其他分词器 238
7.8 词元过滤器 238
7.8.1 stemmer词元过滤器 239
7.8.2 shingle词元过滤器 239
7.8.3 synonym词元过滤器 240
7.9 小结 242
第8章 搜索简介 243
8.1 概述 243
8.2 搜索的工作原理 244
8.3 电影样本数据 245
8.4 搜索的基础知识 247
8.4.1 _search端点 247
8.4.2 查询上下文和过滤上下文 248
8.5 请求和响应的结构 250
8.5.1 搜索请求 250
8.5.2 搜索响应 251
8.6 URI搜索 253
8.6.1 按片名搜索电影 253
8.6.2 搜索特定的电影 254
8.6.3 附加参数 254
8.6.4 使用Query DSL支持URI搜索 255
8.7 Query DSL 255
8.7.1 查询样例 256
8.7.2 通过cURL调用Query DSL 256
8.7.3 使用Query DSL进行聚合 257
8.7.4 叶子查询和复合查询 257
8.8 搜索功能 258
8.8.1 分页 259
8.8.2 高亮显示 260
8.8.3 解释相关性分数 262
8.8.4 排序 264
8.8.5 操纵结果 267
8.8.6 跨索引和数据流搜索 271
8.9 小结 272
第9章 词项级搜索 273
9.1 概述 273
9.1.1 词项级查询不进行分析 273
9.1.2 词项级查询示例 274
9.2 term查询 275
9.2.1 在text类型的字段上执行term查询 275
9.2.2 term查询示例 276
9.2.3 简化的词项级查询 277
9.3 terms查询 277
9.3.1 terms查询示例 278
9.3.2 terms查找查询 279
9.4 ids查询 280
9.5 exists查询 281
9.6 range查询 282
9.7 wildcard查询 284
9.8 prefix查询 286
9.8.1 简化查询 287
9.8.2 加速prefix查询 288
9.9 fuzzy查询 289
9.10 小结 291
第 10章 全文搜索 292
10.1 概述 292
10.1.1 精确率 293
10.1.2 召回率 293
10.2 样本数据 295
10.3 match_all查询 295
10.3.1 构建match_all查询 295
10.3.2 match_all查询的简写格式 296
10.4 match_none查询 296
10.5 match查询 297
10.5.1 match查询的格式 297
10.5.2 使用match查询搜索 298
10.5.3 分析match查询 298
10.5.4 搜索多个单词 299
10.5.5 至少匹配几个单词 300
10.5.6 使用fuzziness关键词纠正拼写错误 301
10.6 match_phrase查询 301
10.7 match_phrase_prefix查询 303
10.8 multi_match查询 304
10.8.1 最佳字段 304
10.8.2 dis_max查询 306
10.8.3 tie_breaker 306
10.8.4 提升单个字段的权重 308
10.9 query_string查询 309
10.9.1 query_string查询中的字段 310
10.9.2 默认运算符 311
10.9.3 带有短语的query_string查询 312
10.10 模糊查询 312
10.11 简单的字符串查询 313
10.12 simple_query_string查询 314
10.13 小结 315
第 11章 复合查询 316
11.1 产品样本数据 317
11.1.1 产品模式 317
11.1.2 索引产品数据 318
11.2 复合查询 318
11.3 bool查询 320
11.3.1 bool查询结构 320
11.3.2 must子句 321
11.3.3 增强must子句 322
11.3.4 must_not子句 324
11.3.5 增强must_not子句 325
11.3.6 should子句 327
11.3.7 filter子句 332
11.3.8 组合所有子句 334
11.3.9 命名查询 335
11.4 constant_score查询 337
11.5 boosting查询 339
11.6 dis_max查询 341
11.7 function_score查询 343
11.7.1 random_score函数 344
11.7.2 script_score函数 345
11.7.3 field_value_factor函数 346
11.7.4 组合函数分数 347
11.8 小结 348
第 12章 高级搜索 349
12.1 位置搜索简介 350
12.1.1 bounding_box查询 350
12.1.2 geo_distance查询 351
12.1.3 geo_shape查询 351
12.2 地理空间数据类型 352
12.2.1 geo_point数据类型 352
12.2.2 geo_shape数据类型 353
12.3 地理空间查询 355
12.4 geo_bounding_box查询 355
12.5 geo_distance查询 359
12.6 geo_shape查询 360
12.7 shape查询 362
12.8 span查询 364
12.8.1 样本数据 364
12.8.2 span_first查询 365
12.8.3 span_near查询 366
12.8.4 span_within查询 367
12.8.5 span_or查询 369
12.9 专用查询 370
12.9.1 distance_feature查询 370
12.9.2 pinned查询 375
12.9.3 more_like_this查询 376
12.9.4 percolate查询 377
12.10 小结 381
第 13章 聚合 382
13.1 概述 382
13.1.1 端点和语法 383
13.1.2 结合搜索和聚合 383
13.1.3 多重聚合和嵌套聚合 384
13.1.4 忽略结果 384
13.2 指标聚合 385
13.2.1 样本数据 385
13.2.2 value_count指标 386
13.2.3 avg指标 387
13.2.4 sum指标 388
13.2.5 min指标和max指标 388
13.2.6 stats指标 389
13.2.7 extended_stats指标 390
13.2.8 cardinality指标 391
13.3 桶聚合 392
13.3.1 直方图 393
13.3.2 子聚合 396
13.3.3 自定义range聚合 397
13.3.4 terms聚合 399
13.3.5 multi-terms聚合 400
13.4 父聚合和兄弟聚合 401
13.4.1 父聚合 402
13.4.2 兄弟聚合 403
13.5 管道聚合 404
13.5.1 管道聚合的类型 404
13.5.2 样本数据 404
13.5.3 管道聚合的语法 405
13.5.4 可用的管道聚合 406
13.5.5 cumulative_sum父管道聚合 407
13.5.6 max_bucket和min_bucket兄弟管道聚合 408
13.6 小结 410
第 14章 集群管理 411
14.1 扩展集群 412
14.1.1 向集群中添加节点 412
14.1.2 集群健康 413
14.1.3 提高读吞吐量 416
14.2 节点间通信 416
14.3 确定分片大小 417
14.3.1 设置单个索引 417
14.3.2 设置多个索引 418
14.4 快照 419
14.4.1 开始使用 420
14.4.2 注册快照存储库 421
14.4.3 创建快照 423
14.4.4 恢复快照 424
14.4.5 删除快照 424
14.4.6 自动化快照 424
14.5 高级配置 428
14.5.1 主配置文件 429
14.5.2 日志选项 429
14.5.3 Java虚拟机选项 430
14.6 集群主节点 431
14.6.1 主节点 431
14.6.2 主节点选举 432
14.6.3 集群状态 432
14.6.4 法定人数 433
14.6.5 脑裂问题 433
14.6.6 专用主节点 434
14.7 小结 435
第 15章 性能与故障排查 437
15.1 搜索与速度问题 437
15.1.1 现代硬件 438
15.1.2 文档建模 438
15.1.3 选择keyword类型而不是text类型 441
15.2 索引速度问题 442
15.2.1 系统生成的ID 442
15.2.2 批量请求 442
15.2.3 调整刷新频率 442
15.3 集群不稳定问题 445
15.3.1 集群状态不是绿色 445
15.3.2 未分配的分片 445
15.3.3 磁盘使用阈值 447
15.4 断路器 449
15.5 结束语 450
15.6 小结 451
附录A 安装 452
附录B 摄取管道 459
附录C 客户端 466
媒体评论
“作者的热情洋溢在这本书的字里行间,无论是内容的深度与广度、充满热情的语调,还是那些实用的示例,无不体现这一点。我希望你能将所学的内容付诸实践。”
——Shay Banon,Elasticsearch 创始人
“实用且写作精良。对初学者来说是一个很好的起点,对经验丰富的专业人士来说是一本全面的指南。”
——Simona Russo,Serendipity 公司
“从书的开头几段就足以感受到作者的热忱。作者的热忱与丰富的经验和技术实力结合,这本书无疑是一部经典之作。”
——Her
《Elasticsearch实战(第2版)》全书速览
结束语
通过本文的介绍,可以看到Elasticsearch在互联网大厂中的应用广泛且深入,从大规模数据处理、搜索与推荐系统到日志分析和监控,其技术需求涵盖了从基础架构优化到高级数据分析等多个层面。随着业务的不断发展,企业对Elasticsearch技术的实战能力要求在不断提高,对相关岗位的要求也越来越高。由此可见,Elasticsearch在处理大规模数据集、优化搜索性能和支持复杂业务需求方面具有强大的能力,业界对Elasticsearch技术的需求也可见一斑。