资深软件开发专家、架构师撰写,系统且深入阐释ElasticSearch涉及的工具、方法、原则和实践,深入剖析ElasticSearch应用过程中遇到的各个层面的问题,涉及分布式索引机制、系统监控及性能优化、用户体验改善、Java API应用,以及自定义插件开发等,能为工程师与架构师快速提高ElasticSearch水平提供有效指导。
本书共9章,第1章介绍Apache Lucene的工作方式、ElasticSearch的基本概念以及ElasticSearch的工作机制;第2章描述Lucene评分机制、如何进行查询重写,以及ElasticSearch的批处理API和如何使用过滤器来优化查询;第3章描述如何修改Lucene评分,如何使用不同的倒排索引格式来改变索引字段的结构;第4章阐述如何选择恰当的索引分片、路由工作机制、索引分片机制;第5章介绍如何为具体应用选择正确的目录实现,同时阐述发现、网关、恢复模块及其配置方式,以及调优ElasticSearch的缓存机制;第6章介绍JVM垃圾收集的工作原理、重要性以及如何调优;第7章介绍帮助修正查询中的拼写错误以及构建高效的自动完成机制——查询建议,还展示如何通过使用不同查询类型和ElasticSearch的其他功能来提高查询相关性;第8章重点阐释ElasticSearch的JAVA API;第9章通过演示如何开发你自己的河流和语言处理插件来介绍ElasticSearch的插件开发。
译者序
前言
致谢
作者简介
评审者简介
第1章 ElasticSearch简介1
1.1 Apache Lucene简介1
1.1.1 熟悉Lucene2
1.1.2 Lucene的总体架构2
1.1.3 分析你的数据3
1.1.4 Lucene查询语言4
1.2 ElasticSearch简介6
1.2.1 ElasticSearch的基本概念7
1.2.2 ElasticSearch架构背后的关键概念8
1.2.3 ElasticSearch的工作流程9
1.3 小结13
第2章 查询DSL进阶14
2.1 Apache Lucene默认评分公式解释14
2.1.1 何时文档被匹配上15
2.1.2 TF/IDF评分公式15
2.1.3 ElasticSearch如何看评分16
2.2 查询改写17
2.2.1 前缀查询范例17
2.2.2 回顾Apache Lucene19
2.2.3 查询改写的属性20
2.3 二次评分21
2.3.1 理解二次评分21
2.3.2 范例数据21
2.3.3 查询22
2.3.4 二次评分查询的结构22
2.3.5 二次评分参数配置23
2.3.6 小结24
2.4 批量操作24
2.4.1 批量取24
2.4.2 批量查询26
2.5 排序27
2.5.1 基于多值字段的排序28
2.5.2 基于多值geo字段的排序28
2.5.3 基于嵌套对象的排序30
2.6 数据更新API31
2.6.1 简单字段更新31
2.6.2 使用脚本按条件更新32
2.6.3 使用更新 API创建或删除文档33
2.7 使用过滤器优化查询33
2.7.1 过滤器与缓存34
2.7.2 词项查找过滤器36
2.8 ElasticSearch切面机制中的过滤器与作用域40
2.8.1 范例数据40
2.8.2 切面计算和过滤41
2.8.3 过滤器作为查询的一部分42
2.8.4 切面过滤器44
2.8.5 全局作用域45
2.9 小结47
第3章 底层索引控制48
3.1 改变Apache Lucene的评分方式48
3.1.1 可用的相似度模型49
3.1.2 为每字段配置相似度模型49
3.2 相似度模型配置50
3.2.1 选择默认的相似度模型51
3.2.2 配置被选用的相似度模型52
3.3 使用编解码器53
3.3.1 简单使用范例53
3.3.2 工作原理解释54
3.3.3 可用的倒排表格式55
3.3.4 配置编解码器56
3.4 准实时、提交、更新及事务日志58
3.4.1 索引更新及更新提交59
3.4.2 事务日志60
3.4.3 准实时读取62
3.5 深入理解数据处理62
3.5.1 输入并不总是进行文本分析62
3.5.2 范例的使用65
3.5.3 索引期更换分词器67
3.5.4 搜索时更换分析器68
3.5.5 陷阱与默认分析68
3.6 控制索引合并68
3.6.1 选择正确的合并策略69
3.6.2 合并策略配置70
3.6.3 调度72
3.7 小结73
第4章 分布式索引架构74
4.1 选择合适的分片和副本数74
4.1.1 分片和过度分配75
4.1.2 一个过度分配的正面例子75
4.1.3 多分片与多索引76
4.1.4 副本76
4.2 路由76
4.2.1 分片和数据77
4.2.2 测试路由功能77
4.2.3 索引时使用路由80
4.2.4 别名83
4.2.5 多个路由值83
4.3 调整默认的分片分配行为84
4.3.1 分片分配器简介84
4.3.2 even_shard 分片分配器84
4.3.3 balanced分片分配器85
4.3.4 自定义分片分配器85
4.3.5 裁决者86
4.4 调整分片分配88
4.4.1 部署意识89
4.4.2 过滤91
4.4.3 运行时更新分配策略92
4.4.4 确定每个节点允许的总分片数93
4.4.5 更多的分片分配属性96
4.5 查询执行偏好97
4.6 应用我们的知识99
4.6.1 基本假定99
4.6.2 配置100
4.6.3 变化来了104
4.7 小结105
第5章 管理ElasticSearch106
5.1 选择正确的目录实现-存储模块106
5.2 发现模块的配置109
5.2.1 Zen发现109
5.2.2 亚马逊EC2发现111
5.2.3 本地网关114
5.2.4 恢复配置115
5.3 索引段统计116
5.3.1 segments API简介116
5.3.2 索引段信息的可视化118
5.4 理解ElasticSearch缓存119
5.4.1 过滤器缓存119
5.4.2 字段数据缓存121
5.4.3 清除缓存126
5.5 小结127
第6章 故障处理129
6.1 了解垃圾回收器129
6.1.1 Java内存130
6.1.2 处理垃圾回收问题131
6.1.3 在类UNIX系统中避免内存交换135
6.2 关于I/O调节136
6.2.1 控制IO节流136
6.2.2 配置136
6.3 用预热器提升查询速度138
6.3.1 为什么使用预热器138
6.3.2 操作预热器138
6.3.3 测试预热器141
6.4 热点线程144
6.4.1 澄清热点线程API的用法误区145
6.4.2 热点线程API的响应信息145
6.5 现实场景146
6.5.1 越来越差的性能146
6.5.2 混杂的环境和负载不平衡148
6.5.3 我的服务器出故障了149
6.6 小结150
第7章 改善用户搜索体验151
7.1 改正用户拼写错误151
7.1.1 测试数据152
7.1.2 深入技术细节152
7.1.3 completion suggester168
7.2 改善查询相关性172
7.2.1 数据172
7.2.2 改善相关性的探索之旅174
7.3 小结188
第8章 ElasticSearch Java API189
8.1 ElasticSearch Java API简介189
8.2 代码190
8.3 连接到集群191
8.3.1 成为ElasticSearch节点191
8.3.2 使用传输机连接方式192
8.3.3 选择合适的连接方式193
8.4 API剖析194
8.5 CRUD操作195
8.5.1 读取文档195
8.5.2 索引文档197
8.5.3 更新文档199
8.5.4 删除文档201
8.6 ElasticSearch查询203
8.6.1 准备查询请求203
8.6.2 构造查询203
8.6.3 分页206
8.6.4 排序207
8.6.5 过滤207
8.6.6 切面计算208
8.6.7 高亮209
8.6.8 查询建议209
8.6.9 计数210
8.6.10 滚动211
8.7 批量执行多个操作211
8.7.1 批量操作211
8.7.2 根据查询删除文档212
8.7.3 Multi GET212
8.7.4 Multi Search212
8.8 Percolator213
8.9 explain API214
8.10 构造JSON格式的查询和文档214
8.11 管理API216
8.11.1 集群管理API216
8.11.2 索引管理API219
8.12 小结226
第9章 开发ElasticSearch插件227
9.1 建立Apache Maven项目结构227
9.1.1 了解基本知识228
9.1.2 Maven Java项目的结构228
9.1.3 POM的理念228
9.1.4 运行构建过程229
9.1.5 引入Maven装配插件230
9.2 创建一个自定义river插件232
9.2.1 实现细节232
9.2.2 测试river238
9.3 创建自定义分析插件240
9.3.1 实现细节240
9.3.2 测试自定义分析插件247
9.4 小结249
《民国时期山东城市下层社会物质生活研究》内容简介:民国时期是中国社会转型的重要时期。民国时期城市下层民众的生活遭际中蕴含着
《使用HTML5和Node构建超媒体API》探讨了超媒体API的设计,介绍了作为超媒体API的构件块的超媒体因子,并讲解了基本格式、状态转
《农业互联网》内容简介:如果说互联网正在改变我们身边的一切,那么,10万亿规模的整个大农业将因互联网而迎来一场影响深远的变革
《四时幽赏录》内容简介:本书以其独特的审美视角、精悍清新之笔触,为人们勾勒出西湖四时芳容,充满真趣。这种以四季景观描绘西湖
《思想的浮冰》内容简介:拥有儒家价值的范导,并不能保证我们的生活无懈可击,但失去儒家价值的范导,却注定了我们的生活会一无是
《Webpack+Babel入门与实例详解》内容简介:这是一本针对零基础前端开发者讲解Webpack与Babel使用方法的图书。随着前端工程的不断发
ANSYS结构有限元高级分析方法与范例应用 内容简介 本书将结构有限元分析的基本力学概念与ANSYS实践紧密结合,通过大量生动的原创性分析实例,向读者系统全面地...
网页制作综合技术教程 本书特色 遵循符合web标准的设计思想,讲解适于实际工作的网页元素,提供丰富的教学典型案例。网页制作综合技术教程 内容简介 本书全面介绍了...
本书集中讨论CGI编程,以便利用目录 目录译者序前言第一部分CGI的基本知识第1章CGI介绍1.1什么是共同网关接口1.2Web上...更多>>
《中国新三板年度报告(2017年)》内容简介:新三板自2013年12月14日推向全国以来,至今已经历完整四年。这四年,在交易和融资活跃
《SAS Viya》内容简介:本书全面系统地介绍了SASViya的基础知识,让更多用户学习和使用SAS的新平台和技术,能够快速利用SASViya开发
《人工智能时代:新兴媒介、产业与社会(第二辑)》内容简介:本书由上海交通大学媒体与传播学院、国际传播学会(ICA)共同主办,以
《时装设计元素:调研与设计》是与设计相关的重要元素。《时装设计元素:调研与设计》通过一系列的章节,讲解了一个设计师首先可能
《蒲褐山房诗话新编》内容简介:以诗话命名的著作始于欧阳修。它是一种以文学为内容的随笔。所以许颉说:『诗话者,辨句法,备古今
《茅理翔:创业式传承》内容简介:家族企业的传承已经成为民企发展过程中的一道难题,方太集团茅氏父子用自己的人生经验和智慧,给
《生命的战争》内容简介:最早的那批可以自我复制并且随机突变的复杂有机分子,经历了怎样的发展,才最终造就了如今这个多姿多彩的
内容提要本书初版于1978年,曾获1980年“新长征优秀科普作品奖”。这次重版,除对原有各篇根据近十多年来我国科技史研究方面的新
本书《设计经典译丛:设计与文化导论》介绍在国际文化、社会和经济背景下,1900年至今的现代(与后现代)设计发展历史。它探讨后现
《Android技术内幕:系统卷》是国内首本系统对Android的源代码进行深入分析的著作。全书将Android系统从构架上依次分为应用层、应
Theincreasinglycommonuseoffast-speedInternetconnectionsoverthepastfewyearshascon...