Elasticsearch实战(第2版)

Elasticsearch实战(第2版)

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书全面深入地介绍Elasticsearch的核心功能及其工作机制。

内容简介

本书由浅入深,从Elasticsearch的基本用法和架构原理,以及倒排索引、分片、节点角色和相关性等核心概念讲起;然后深入探讨数据处理和索引管理,涵盖映射模式、数据类型、文本分析、索引模板;接着详细介绍词项级搜索、全文搜索、复合查询和高级搜索等Elasticsearch的搜索功能,并深入讲解聚合;最后聚焦生产环境中的Elasticsearch管理和性能优化。

本书特别注重实践,提供了大量的代码示例,涵盖从基础查询到复杂功能的各种应用场景。与第1版相比,这一版更新并补充了许多新的功能点,如索引生命周期管理、可组合索引模板机制、地理位置查询等。   

本书是使用Elasticsearch开发全功能搜索引擎的实践指南,适合刚接触Elasticsearch领域、希望了解其基本工作原理的开发者、架构师、分析师、管理者、产品负责人或希望利用Elasticsearch进行实时数据分析和处理的数据科学家阅读,也适合在实际项目中遇到挑战的资深工程师及学习大数据技术并对搜索技术感兴趣的学生和研究人员阅读。

作者简介

作者马杜苏丹·孔达,是全栈首席工程师、架构师,也是技术导师和会议演讲者。他还是一位颇具盛名的技术图书作者,他关于Java、Spring和Hibernate生态系统的书广受读者欢迎。此外,他还提供有关Elasticsearch和Elastic Stack的在线培训。

章节目录

版权信息

内容提要

对本书的赞誉

对本书第1版的赞誉

中文版序

译者序

前言

致谢

关于本书

关于作者

关于封面插图

第1章 概述

1.1 一个好的搜索引擎是怎样的

1.2 搜索已成为新常态

1.2.1 结构化数据与非结构化(全文)数据

1.2.2 数据库支持的搜索

1.2.3 数据库与搜索引擎

1.3 现代搜索引擎

1.3.1 功能

1.3.2 流行的搜索引擎

1.4 Elasticsearch概述

1.4.1 核心领域

1.4.2 Elastic Stack

1.4.3 Elasticsearch的使用场景

1.4.4 不适合Elasticsearch的使用场景

1.4.5 误解

1.5 业界案例

1.6 生成式人工智能与现代搜索

1.7 小结

第2章 开始使用

2.1 往Elasticsearch中导入数据

2.1.1 在线书店

2.1.2 索引文档

2.1.3 索引第一个文档

2.1.4 索引更多文档

2.2 检索数据

2.2.1 计算文档数量

2.2.2 检索文档

2.3 全文搜索

2.3.1 匹配查询:按作者找书

2.3.2 带有AND运算符的匹配查询

2.3.3 使用_bulk API索引文档

2.3.4 多字段搜索

2.3.5 提升结果

2.3.6 搜索短语

2.3.7 处理缺失单词的短语

2.3.8 处理拼写错误

2.4 词项级查询

2.4.1 term查询

2.4.2 range查询

2.5 复合查询

2.5.1 bool查询

2.5.2 must子句

2.5.3 must_not子句

2.5.4 should子句

2.5.5 filter子句

2.6 聚合

2.6.1 指标聚合

2.6.2 桶聚合

2.7 小结

第3章 架构

3.1 概述

3.1.1 数据导入

3.1.2 数据处理

3.1.3 数据输出

3.2 基本组件

3.2.1 文档

3.2.2 索引

3.2.3 数据流

3.2.4 分片和副本

3.2.5 节点和集群

3.3 倒排索引

3.4 相关性

3.4.1 相关性分数

3.4.2 相关性(相似性)算法

3.5 路由算法

3.6 扩展

3.6.1 纵向扩展(垂直扩展)

3.6.2 横向扩展(水平扩展)

3.7 小结

第4章 映射

4.1 概述

4.1.1 映射定义

4.1.2 首次索引文档

4.2 动态映射

4.2.1 推断类型的机制

4.2.2 动态映射的局限性

4.3 显式映射

4.3.1 使用索引API定义映射

4.3.2 使用映射API更新模式

4.3.3 不允许修改现有字段

4.3.4 类型强制转换

4.4 数据类型

4.5 核心数据类型

4.5.1 文本数据类型

4.5.2 关键词数据类型

4.5.3 日期数据类型

4.5.4 数值数据类型

4.5.5 布尔数据类型

4.5.6 范围数据类型

4.5.7 IP地址数据类型

4.6 高级数据类型

4.6.1 geo_point数据类型

4.6.2 object数据类型

4.6.3 nested数据类型

4.6.4 flattened数据类型

4.6.5 join数据类型

4.6.6 search_as_you_type数据类型

4.7 拥有多种数据类型的字段

4.8 小结

第5章 处理文档

5.1 索引文档

5.1.1 文档API

5.1.2 索引机制

5.1.3 自定义刷新过程

5.2 检索文档

5.2.1 使用单文档API

5.2.2 检索多个文档

5.2.3 ids查询

5.3 操纵响应

5.3.1 从响应中移除元数据

5.3.2 抑制源数据

5.3.3 包含或排除字段

5.4 更新文档

5.4.1 文档更新机制

5.4.2 _update API

5.4.3 脚本更新

5.4.4 替换文档

5.4.5 更新插入

5.4.6 将更新视为更新插入

5.4.7 通过查询更新

5.5 删除文档

5.5.1 通过ID删除

5.5.2 通过查询删除

5.5.3 通过range查询删除

5.5.4 删除所有文档

5.6 批量处理文档

5.6.1 _bulk API的格式

5.6.2 批量索引文档

5.6.3 批量请求处理多个索引和操作

5.6.4 使用cURL执行批量请求

5.7 重新索引文档

5.8 小结

第6章 索引操作

6.1 概述

6.2 创建索引

6.2.1 隐式创建索引(自动创建)

6.2.2 显式创建索引(手动创建)

6.2.3 自定义索引设置

6.2.4 索引映射

6.2.5 索引别名

6.3 读取索引

6.3.1 读取公开索引

6.3.2 读取隐藏索引

6.4 删除索引

6.4.1 删除多个索引

6.4.2 仅删除别名

6.5 关闭索引和打开索引

6.5.1 关闭索引

6.5.2 打开索引

6.6 索引模板

6.6.1 创建可组合(索引)模板

6.6.2 创建组件模板

6.7 监控和管理索引

6.7.1 索引的统计信息

6.7.2 多个索引的统计信息

6.8 高级操作

6.8.1 拆分索引

6.8.2 缩小索引

6.8.3 滚动更新索引别名

6.9 索引生命周期管理

6.9.1 索引生命周期

6.9.2 手动管理索引生命周期

6.9.3 带有滚动机制的索引生命周期

6.10 小结

第7章 文本分析

7.1 概述

7.1.1 查询非结构化数据

7.1.2 分析器来拯救

7.2 分析器模块

7.2.1 分词

7.2.2 归一化

7.2.3 分析器的结构

7.2.4 测试分析器

7.3 内置分析器

7.3.1 standard分析器

7.3.2 simple分析器

7.3.3 whitespace分析器

7.3.4 keyword分析器

7.3.5 fingerprint分析器

7.3.6 pattern分析器

7.3.7 语言分析器

7.4 自定义分析器

高级自定义

7.5 指定分析器

7.5.1 为索引指定分析器

7.5.2 为搜索指定分析器

7.6 字符过滤器

7.6.1 html_strip字符过滤器

7.6.2 mapping字符过滤器

7.6.3 pattern_replace字符过滤器

7.7 分词器

7.7.1 standard分词器

7.7.2 ngram分词器和edge_ngram分词器

7.7.3 其他分词器

7.8 词元过滤器

7.8.1 stemmer词元过滤器

7.8.2 shingle词元过滤器

7.8.3 synonym词元过滤器

7.9 小结

第8章 搜索简介

8.1 概述

8.2 搜索的工作原理

8.3 电影样本数据

8.4 搜索的基础知识

8.4.1 _search端点

8.4.2 查询上下文和过滤上下文

8.5 请求和响应的结构

8.5.1 搜索请求

8.5.2 搜索响应

8.6 URI搜索

8.6.1 按片名搜索电影

8.6.2 搜索特定的电影

8.6.3 附加参数

8.6.4 使用Query DSL支持URI搜索

8.7 Query DSL

8.7.1 查询样例

8.7.2 通过cURL调用Query DSL

8.7.3 使用Query DSL进行聚合

8.7.4 叶子查询和复合查询

8.8 搜索功能

8.8.1 分页

8.8.2 高亮显示

8.8.3 解释相关性分数

8.8.4 排序

8.8.5 操纵结果

8.8.6 跨索引和数据流搜索

8.9 小结

第9章 词项级搜索

9.1 概述

9.1.1 词项级查询不进行分析

9.1.2 词项级查询示例

9.2 term查询

9.2.1 在text类型的字段上执行term查询

9.2.2 term查询示例

9.2.3 简化的词项级查询

9.3 terms查询

9.3.1 terms查询示例

9.3.2 terms查找查询

9.4 ids查询

9.5 exists查询

9.6 range查询

9.7 wildcard查询

9.8 prefix查询

9.8.1 简化查询

9.8.2 加速prefix查询

9.9 fuzzy查询

9.10 小结

第10章 全文搜索

10.1 概述

10.1.1 精确率

10.1.2 召回率

10.2 样本数据

10.3 match_all查询

10.3.1 构建match_all查询

10.3.2 match_all查询的简写形式

10.4 match_none查询

10.5 match查询

10.5.1 match查询的格式

10.5.2 使用match查询搜索

10.5.3 分析match查询

10.5.4 搜索多个单词

10.5.5 至少匹配几个单词

10.5.6 使用fuzziness关键词纠正拼写错误

10.6 match_phrase查询

10.7 match_phrase_prefix查询

10.8 multi_match查询

10.8.1 最佳字段

10.8.2 dis_max查询

10.8.3 tie_breaker

10.8.4 提升单个字段的权重

10.9 query_string查询

10.9.1 query_string查询中的字段

10.9.2 默认运算符

10.9.3 带有短语的query_string查询

10.10 模糊查询

10.11 简单的字符串查询

10.12 simple_query_string查询

10.13 小结

第11章 复合查询

11.1 产品样本数据

11.1.1 产品模式

11.1.2 索引产品数据

11.2 复合查询

11.3 bool查询

11.3.1 bool查询结构

11.3.2 must子句

11.3.3 增强must子句

11.3.4 must_not子句

11.3.5 增强must_not子句

11.3.6 should子句

11.3.7 filter子句

11.3.8 组合所有子句

11.3.9 命名查询

11.4 constant_score查询

11.5 boosting查询

11.6 dis_max查询

11.7 function_score查询

11.7.1 random_score函数

11.7.2 script_score函数

11.7.3 field_value_factor函数

11.7.4 组合函数分数

11.8 小结

第12章 高级搜索

12.1 位置搜索简介

12.1.1 bounding_box查询

12.1.2 geo_distance查询

12.1.3 geo_shape查询

12.2 地理空间数据类型

12.2.1 geo_point数据类型

12.2.2 geo_shape数据类型

12.3 地理空间查询

12.4 geo_bounding_box查询

12.5 geo_distance查询

12.6 geo_shape查询

12.7 shape查询

12.8 span查询

12.8.1 样本数据

12.8.2 span_first查询

12.8.3 span_near查询

12.8.4 span_within查询

12.8.5 span_or查询

12.9 专用查询

12.9.1 distance_feature查询

12.9.2 pinned查询

12.9.3 more_like_this查询

12.9.4 percolate查询

12.10 小结

第13章 聚合

13.1 概述

13.1.1 端点和语法

13.1.2 结合搜索和聚合

13.1.3 多重聚合和嵌套聚合

13.1.4 忽略结果

13.2 指标聚合

13.2.1 样本数据

13.2.2 value_count指标

13.2.3 avg指标

13.2.4 sum指标

13.2.5 min指标和max指标

13.2.6 stats指标

13.2.7 extended_stats指标

13.2.8 cardinality指标

13.3 桶聚合

13.3.1 直方图

13.3.2 子聚合

13.3.3 自定义range聚合

13.3.4 terms聚合

13.3.5 multi-terms聚合

13.4 父聚合和兄弟聚合

13.4.1 父聚合

13.4.2 兄弟聚合

13.5 管道聚合

13.5.1 管道聚合的类型

13.5.2 样本数据

13.5.3 管道聚合的语法

13.5.4 可用的管道聚合

13.5.5 cumulative_sum父管道聚合

13.5.6 max_bucket和min_bucket兄弟管道聚合

13.6 小结

第14章 集群管理

14.1 扩展集群

14.1.1 向集群中添加节点

14.1.2 集群健康

14.1.3 提高读吞吐量

14.2 节点间通信

14.3 确定分片大小

14.3.1 设置单个索引

14.3.2 设置多个索引

14.4 快照

14.4.1 开始使用

14.4.2 注册快照存储库

14.4.3 创建快照

14.4.4 恢复快照

14.4.5 删除快照

14.4.6 自动化快照

14.5 高级配置

14.5.1 主配置文件

14.5.2 日志选项

14.5.3 Java虚拟机选项

14.6 集群主节点

14.6.1 主节点

14.6.2 主节点选举

14.6.3 集群状态

14.6.4 法定人数

14.6.5 脑裂问题

14.6.6 专用主节点

14.7 小结

第15章 性能与故障排查

15.1 搜索与速度问题

15.1.1 现代硬件

15.1.2 文档建模

15.1.3 选择keyword类型而不是text类型

15.2 索引速度问题

15.2.1 系统生成的ID

15.2.2 批量请求

15.2.3 调整刷新频率

15.3 集群不稳定问题

15.3.1 集群状态不是绿色

15.3.2 未分配的分片

15.3.3 磁盘使用阈值

15.4 断路器

15.5 结束语

15.6 小结

附录A 安装

A.1 安装Elasticsearch

A.1.1 下载Elasticsearch二进制包

A.1.2 在Windows上安装Elasticsearch

A.1.3 在macOS上安装Elasticsearch

A.1.4 通过Docker安装Elasticsearch

A.1.5 使用_cat API测试Elasticsearch服务器

A.2 安装Kibana

A.2.1 下载Kibana二进制包

A.2.2 在Windows上安装Kibana

A.2.3 在macOS上安装Kibana

A.2.4 通过Docker安装Kibana

附录B 摄取管道

B.1 概述

B.2 摄取管道的工作机制

B.3 将PDF文件加载到Elasticsearch中

附录C 客户端

C.1 Java客户端

C.2 背景

C.3 Maven/Gradle项目设置

C.4 初始化

C.5 命名空间客户端

C.6 创建一个索引

C.7 索引文档

C.8 搜索

Elasticsearch实战(第2版)是2025年由人民邮电出版社出版,作者[英] 马杜苏丹·孔达。

得书感谢您对《Elasticsearch实战(第2版)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Java EE核心框架实战(第2版) 电子书
本书宗旨 提高读者学习Java EE的效率,增强其项目实战能力。本书摒弃了软件公司中不常用或不实用的技术,而是采用近200个开发案例,为读者讲解了开发商业软件的知识,帮助读者进行“精要”式的学习,汲取Java EE的思想,正确地进行项目实战。 本书特色 不留遗漏——覆盖主流Java EE轻量级框架 直击要害——实战化案例精准定位开发细节 学以致用——精要式项目确保开发/ 学习不脱节 潜移默化——研磨式知识讲解参透技术要点 提升效率——垂直式技术精解不绕弯路 循序提升——渐进式知识点统排确保连贯 以点概面——解决方案式项目,知识独立却又体系完整 成功案例——全面经过项目过程锤炼,提升学习/ 开发效率
新媒体运营实战技能(第2版) 电子书
手把手教会你学习新媒体运营的各种技能。
区块链技术进阶与实战(第2版) 电子书
本书从实战的角度对区块链技术进行了全面的介绍和剖析,非常适合区块链开发人员由浅入深地学习区块链技术。全书共分为4个部分,包括:对区块链进行全景分析,介绍其概念、历史、技术流派、主要公司和典型应用场景等内容。
微信小程序开发实战(第2版) 电子书
本书是针对Web前端开发人员编写的一本快速掌握微信小程序开发的教程。本书通过通俗易懂的语言、丰富实用的案例,讲解微信小程序的开发技术。本书共8章,第1章讲解微信小程序的入门知识,介绍微信小程序的特点和发展前景;第2章和第3章分别讲解微信小程序的页面制作和页面交互;第4章和第5章讲解微信小程序的常用API;第6章讲解综合项目“点餐”微信小程序;第7章讲解微信小程序开发进阶;第8章讲解基于uni-ap
Wireshark数据包分析实战(第3版) 电子书
Wireshark网络嗅探软件详解:2.0.5版IPv6及案例讲解。