2025三掌柜赠书活动第五期:Elasticsearch实战(第2版)

devtools/2025/2/22 1:38:15/

目录

前言

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技术的需求也可见一斑。


http://www.ppmy.cn/devtools/160833.html

相关文章

基于单片机的智能网控风扇设计

摘要:通过对该项目的研究可以实现对电风扇的智能控制,解决夏季炎热环境下,气温变化不定而档位单一固定的问题,摆脱了必须手动调节挡位的束缚,同时也有效抑制了电扇无人空转对电能的浪费。伴随互联网的迅猛发展,为风扇加装网络模块可实现手机app智能操控和对原有设置的个性…

网络安全行业有哪些公司

只是简单做一下网络安全公司梳理,不作点评,下列排名不分先后。 一、常见的网络安全公司 1、天融信 天融信(002212.SZ)创始于1995年,是上市公司中成立最早的网络安全企业,亲历中国网络安全产业的发展历程…

自适应SQL计划管理(Adaptive SQL Plan Management)在Oracle 12c中的应用

在Oracle Database 12c Release 1 (12.1)版本中,引入了对SQL计划管理(SPM)功能的增强,特别是关于SQL计划基线的自动进化机制。这一改进允许数据库更加智能地管理和优化SQL查询的执行计划,确保即使数据分布发生变化&…

PHP图书借阅小程序源码

📚 图书借阅小程序:一键开启智慧阅读新篇章 🌟 这是一款由ThinkPHP与UniApp两大技术巨擘强强联手精心打造的图书借阅微信小程序,它犹如一座随身携带的移动图书馆,让您无论身处何地都能轻松畅游知识的海洋。创新的多书…

如何启动 Linux Debian/Ubuntu 等 SSH 服务器

文章目录 引言正文一、什么是 SSH?二、安装 SSH 服务器三、验证 SSH 服务是否运行四、配置 SSH 服务器五、使用 SSH 客户端连接到服务器六、安全优化七、常见问题及解决方法 总结 引言 SSH(Secure Shell)是一种用于远程登录和执行命令的安全…

File Browser配置SSH,使用HTTPS安全访问

配置好后就可以直接使用域名安全访问了 首先你先安装好File Browser 一条命令即可简单搞定,正常启动直接输入这样的命令就行了: filebrowser -a 0.0.0.0 -d /opt/filebrowser/filebrowser.db 我们首先把域名证书传输到服务器,最好是同一个…

【大学生职业规划大赛备赛PPT资料PDF | 免费共享】

自取链接: 链接:https://pan.quark.cn/s/4fa45515325e 📢 同学,你是不是正在为职业规划大赛发愁? 想展示独特思路却不知如何下手? 想用专业模板却找不到资源? 别担心!我整理了全网…

DeepSeek底层揭秘——微调

目录 1. 大语言模型微调 2. 核心功能 3. 技术要素 4. 难点挑战暨解决方案 5. 技术路径 6. 应用场景 7. 实际案例 8. 最新研究与技术进展 9. DeepSeek 微调 猫哥说 1. 大语言模型微调 (1) 定义 大语言模型微调(Fine-tuning of Large Language Models&…