类似推荐
编辑推荐
本书全面深入地介绍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版)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。