新書推薦:
《
元好问与他的时代(中华学术译丛)
》
售價:NT$
398.0
《
汽车传感器结构·原理·检测·维修
》
售價:NT$
500.0
《
怪谈百物语:不能开的门(“日本文学史上的奇迹”宫部美雪重要代表作!日本妖怪物语集大成之作,系列累销突破200万册!)
》
售價:NT$
296.0
《
罗马政治观念中的自由
》
售價:NT$
230.0
《
中国王朝内争实录:宠位厮杀
》
售價:NT$
281.0
《
凡事发生皆有利于我(这是一本读了之后会让人运气变好的书”治愈无数读者的心理自助经典)
》
售價:NT$
203.0
《
未来特工局
》
售價:NT$
254.0
《
高术莫用(十周年纪念版 逝去的武林续篇 薛颠传世之作 武学尊师李仲轩家世 凸显京津地区一支世家的百年沉浮)
》
售價:NT$
250.0
|
編輯推薦: |
Elasticsearch是一个开源的搜索和分析引擎,具有现代、快速、分布式、可扩展、容错等优点。Elasticsearch借助了Apache Lucene的能力,让你拥有更强的把控力,可以索引海量数据,并进行搜索。
本书先简单回顾基本知识,然后详细讲述Elasticsearch的中级和高级功能,比如查询、索引、搜索和修改数据。此外,还介绍许多高级概念,包括聚合、索引控制、分片、复制和集群等。
本书也会介绍Elasticsearch的监控和管理模块,包括备份和恢复。你将了解在特定的场景下,如何扩展Elasticsearch集群并提升它的性能。书中还会演示如何在Elasticsearch中创建分析插件。
通过阅读本书,你将学到:
理解Apache Lucene和Elasticsearch 5的设计与架构。
使用和配置Apache Lucene 6的默认文本评分机制。
在用Elasticsearch处理关系型数据时如何避免遇到陷阱。
如何根据不同的用例选择合适的查询,并使用脚本模块,包括新的默认脚本语言Painl
|
內容簡介: |
本书在回顾Elasticsearch基础知识的同时,介绍了最新版本Elasticsearch 5的新功能,并对其中级和高级的功能(如查询、索引、搜索和修改数据)进行了详细说明。本书还将探索聚集、指标控制、分片、复制和聚类等概念,并通过实例展示监控管理模块、创建分析插件等。通过本书,读者可以对Elasticsearch 5有一个全面的认识并掌握其性能。
|
關於作者: |
波哈维·荻西特(Bharvi Dixit) 是一位在搜索服务器、NoSQL数据库和云服务等多个领域有着丰富经验的IT专家,目前就职于Sentieo——一个总部位于美国的金融数据和股权研究平台,负责该公司横跨数百台服务器的整体平台和架构建设。他还在Sentieo的搜索和数据团队中扮演着重要角色。他感兴趣的领域包括搜索工程、数据分析和分布式计算等。
|
目錄:
|
译者序
前言
致谢
作者简介
审阅者简介
第1章 回顾Elasticsearch与演进历史1
1.1 Apache Lucene简介1
1.1.1 更深入地了解Lucene索引2
1.1.2 Elasticsearch概览7
1.2 Elasticsearch 5.x介绍8
1.2.1 Elasticsearch新特性简介9
1.2.2 Elasticsearch的演进10
1.2.3 2.x到5.x的变化14
1.3 小结16
第2章 查询DSL进阶17
2.1 Lucene的新默认文本评分机制——BM2517
2.1.1 理解精确率与召回率18
2.1.2 回顾TF-IDF18
2.1.3 BM25与TF-IDF有什么不同21
2.2 查询DSL重构22
2.3 为任务选择合适的查询22
2.3.1 查询方式分类22
2.3.2 使用示例27
2.3.3 查询DSL的其他重要变化36
2.4 查询改写37
2.4.1 前缀查询示例37
2.4.2 回到Apache Lucene39
2.4.3 查询改写的属性40
2.5 查询模板43
2.5.1 引入查询模板43
2.5.2 Mustache模板引擎45
2.6 小结49
第3章 不只是文本搜索50
3.1 多匹配控制50
3.2 多匹配类型51
3.2.1 最佳字段匹配51
3.2.2 跨字段匹配54
3.2.3 最多字段匹配55
3.2.4 短语匹配56
3.2.5 带前缀的短语匹配56
3.3 用函数得分查询控制分数57
3.4 函数得分查询下的内嵌函数58
3.4.1 weight函数58
3.4.2 字段值因子函数59
3.4.3 脚本评分函数60
3.4.4 衰变函数——linear、exp和gauss60
3.5 查询二次评分61
3.6 二次评分查询的结构62
3.7 Elasticsearch脚本66
3.7.1 语法66
3.7.2 Elasticsearch各版本中脚本的变化66
3.8 新的默认脚本语言Painless67
3.8.1 用Painless写脚本67
3.8.2 示例69
3.8.3 用脚本为结果排序71
3.8.4 按多个字段排序72
3.9 Lucene表达式73
3.9.1 基础知识73
3.9.2 一个例子73
3.10 小结75
第4章 数据建模与分析76
4.1 Elasticsearch中的数据建模方法76
4.2 管理Elasticsearch中的关系型数据77
4.2.1 对象类型77
4.2.2 嵌套文档80
4.2.3 父子关系82
4.2.4 其他可选方案84
4.2.5 数据反范式的例子84
4.3 用聚合做数据分析85
4.3.1 Elasticsearch 5.0的快速聚合85
4.3.2 重温聚合86
4.3.3 一类新的聚合:矩阵聚合93
4.4 小结96
第5章 改善用户搜索体验97
5.1 改正用户拼写错误97
5.1.1 测试数据98
5.1.2 深入技术细节99
5.2 suggester99
5.2.1 在_search端点下使用suggester99
5.2.2 term suggester103
5.2.3 phrase suggester105
5.2.4 completion suggester113
5.3 实现自己的自动完成功能117
5.4 处理同义词120
5.4.1 为同义词搜索准备settings120
5.4.2 格式化同义词121
5.4.3 同义词扩展与收缩122
5.5 小结123
第6章 分布式索引架构125
6.1 配置示例的多节点集群125
6.2 选择合适数量的分片和副本127
6.2.1 分片和预分配127
6.2.2 预分配的正面例子128
6.2.3 多分片与多索引128
6.3 路由129
6.3.1 分片和数据129
6.3.2 测试路由功能130
6.3.3 在索引过程中使用路由132
6.3.4 路由实战132
6.3.5 查询134
6.3.6 别名136
6.3.7 多值路由137
6.4 分片分配控制137
6.4.1 部署意识138
6.4.2 确定每个节点允许的总分片数142
6.4.3 确定每台物理服务器允许的总分片数143
6.5 查询执行偏好146
6.5.1 preference参数146
6.5.2 使用查询执行偏好的例子148
6.6 将数据切分到多个路径中148
6.7 索引与类型——创建索引的改进方法148
6.8 小结149
第7章 底层索引控制150
7.1 改变Apache Lucene的评分方式150
7.2 可用的相似度模型151
7.3 为每个字段配置相似度模型151
7.4 相似度模型配置152
7.5 选择默认的相似度模型153
7.6 选择合适的目录实现——store模块156
7.7 存储类型156
7.8 准实时、提交、更新及事务日志158
7.8.1 索引更新及更新提交159
7.8.2 更改默认的刷新时间159
7.8.3 事务日志160
7.8.4 实时读取161
7.9 控制段合并162
7.9.1 Elasticsearch合并策略的变化163
7.9.2 配置tiered合并策略163
7.9.3 合并调度164
7.9.4 强制合并165
7.10 理解Elasticsearch缓存166
7.10.1 节点查询缓存166
7.10.2 分片查询缓存166
7.10.3 字段数据缓存168
7.10.4 使用circuit breaker168
7.11 小结169
第8章 管理Elasticsearch170
8.1 Elasticsearch的节点类型170
8.1.1 数据节点171
8.1.2 主节点171
8.1.3 Ingest节点171
8.1.4 部落节点172
8.1.5 协调节点客户端节点172
8.2 发现和恢复模块172
8.2.1 发现模块的配置173
8.2.2 网关和恢复模块的配置177
8.2.3 索引恢复API179
8.3 使用对人类友好的Cat API 182
8.3.1 Cap API的基础知识183
8.3.2 使用Cat API184
8.4 备份18
|
內容試閱:
|
欢迎来到Elasticsearch的世界并阅读本书。在阅读的过程中,我们将带你了解与Elasticsearch紧密相关的各种话题。但请注意,本书的目标读者并不是初学者,Elasticsearch从1.x演进到5.x已经有了非常大的变化,因此本书在上一版的基础上补充了很多新内容。
本书将探讨与Elasticsearch和Lucene相关的各方面内容。首先简单介绍一下Lucene和Elasticsearch,带你了解Elasticsearch提供的各种查询方法。在这里会涉及与查询相关的不同主题,比如结果过滤、在特定场景下如何选择合适的查询方式等。Elasticsearch当然并非只具备查询功能,本书还将介绍Elasticsearch新引入的聚合功能以及其他特性,帮你挖掘出被索引数据的价值,并为用户提供更好的查询体验。
在与Elasticsearch脚本模块相关的章节中,也将讨论在Elasticsearch中进行数据建模和处理关系型数据的方法,同时也会展示一些用新的默认脚本语言Painless写成的例子。
对大多数用户来说,查询和数据分析是Elasticsearch最吸引人的部分,不过这些并不是本书讨论的全部内容。因此在索引架构的部分,本书还会试图与读者探讨一些额外的话题,比如如何选择合适的分片数和副本数、如何调整分片分配方式等。在讨论Elasticsearch和Lucene之间的关系时,还将介绍不同的评分算法、如何选择合适的存储机制、它们之间的差异、为什么做出合适的选择很重要等。
Elasticsearch的管理功能虽然被放在了最后讨论,但同样重要。这一部分内容包括发现模块和恢复模块,以及对人类友好的Cat API——使用它可以快速获取管理命令的结果,并将返回的JSON格式数据以人类易于阅读的格式展现,无须再次转换。我们还将讨论ingest节点,它可以在生成索引之前就对Elasticsearch中的数据进行预处理,以及如何利用部落节点来完成在多个节点之间进行联合搜索的功能。
看书名就知道,本书不会错过与性能相关的话题,会用整整一章来专门讨论它。
与本书第2版一样,也有一章专门讨论Elasticsearch插件的开发。展示如何构建Apache Maven项目,并开发两个不同类型的插件——自定义REST操作插件和自定义分析插件。
最后一章将讨论完整的Elastic Stack所包含的全部组件,读后会对如何开始使用Logstash、Kibana和Beats等工具有大致的了解。
读过上述内容之后,如果对某些内容产生了兴趣,那么这本书就是适合的。希望读者在读完整本书之后,会喜欢它。
本书主要内容
第1章先介绍了Apache Lucene的工作方式,再介绍Elasticsearch 5.x。主要关注基本概念以及Elasticsearch在从1.x到5.x的演进过程中发生的重要功能变化。
第2章讲解新的默认评分算法BM25,以及它与之前的TF-IDF算法相比的优点。另外还讲解了Elasticsearch的各种功能,如查询改写、查询模板、查询模块的变化,以及在特定场景下可以选择的不同查询方法,等等。
第3章讲述了多匹配控制、二次评分、函数评分查询等查询相关功能。这一章也包括Elasticsearch的脚本模块相关内容。
第4章讨论了在Elasticsearch中进行数据建模的不同方法,以及在真实场景中如何用parent-child关系和嵌套数据类型来处理文档之间的关系。这一章还进一步讨论了用于数据分析的Elasticsearch聚合模块。
第5章关注通过查询建议器(suggester)提升用户搜索体验的话题,它可以改正查询语句中的拼写错误,提供高效的自动补齐功能。本章内容还包括如何提高查询相关性,如何使用同义词进行搜索等。
第6章的主要内容包括选择正确的分片数和副本数、路由是怎么工作的、分片分配是怎么工作的、如何影响分片行为等。本章还讨论了查询执行偏好是什么,以及它是怎样影响查询执行的。
第7章讲述如何更改Apache Lucene的评分机制,以及如何选择备用的评分算法。本章还包括准实时搜索、索引和事务日志的使用,理解索引的段合并机制,再基于Elasticsearch 5.x的删除合并策略细节,就可以根据场景来进行调优了。在本章的最后,还可以了解IO节流(IO Throttling)和Elasticsearch的缓存机制。
第8章关注与管理Elasticsearch相关的内容。其中介绍了什么是发现模块、网关模块和恢复模块,并讲解了如何配置它们,以及为什么值得如此大费周章地配置它们。本章还介绍了什么是Cat API、如何备份数据并恢复到不同云服务上(亚马逊AWS、微软Azure等)。
第9章讲述了Elasticsearch 5的最新特性——ingest节点,用它可以先对数据进行预处理,再在Elasticsearch中生成索引。本章也讲到了联盟搜索使用部落节点在不同的集群之间完成搜索的工作原理。
第10章讨论在不同的负载下如何提升性能、扩展生产集群的正确方法、垃圾回收原理、热点线程问题等以及如何应对它们,并进一步讨论了查询分析和查询基准测试。本章最后针对高查询量和高索引吞吐率这些不同场景,给出了一些Elasticsearch集群的调优建议。
第11章详细地演示和讲解了如何开发自己的REST操作插件和语言分析插件,以及Elasticsearch插件的开发方法。
第12章介绍了Elastic Stack 5.0的各个组件,包括Elasticsearch、Logstash、Kibana和Beats等。
阅读本书的必备资源
本书基于Elasticsearch 5.0.x写成,所有范例代码都可以在该版本下正常运行。除此之外,还需要curl或者一个与curl类似的可以发送HTTP请求的命令行工具,curl在绝大多数操作系统上都可以使用。请注意,本书中的所有例子都使用了curl。如果想换用其他工具,请注意对请求进行正确的格式转换,以保证选择的工具可以正确地解析请求。
另外,如果想要成功运行第11章中的例子,需要在电脑上安装1.8.0_73版本或以上的JDK,并需要一个可以开发代码的编辑器,比如Eclipse之类的Java IDE。本书使用Apache Maven来构建代码和管理依赖项。
本书最后一章基于Elastic Stack 5.0.0写成,因此要准备好Logstash、Kibana和Metricbeat,并要注意保证版本兼容。
本书的目标读者
本书的目标读者是那些对Elasticsearch的基本概念已经熟悉,还想对这个强大的搜索服务器有进一步了解的Elasticsearch用户和发烧友。书中也包括Apache Lucene和Elasticsearch的工作原理,以及Elasticsearch从1.x到5.x的演进过程。除此之外,想了解如何改进查询相关性、如何自己开发插件来扩展Elasticsearch功能的读者,也可以从中受益。
如果刚刚接触Elasticsearch,对查询和索引等基本概念还不熟悉,阅读本书可能会有些吃力,因为大多数章节都假设读者已经具备了相关背景知识。
约定
在本书中可以看到不同字体的文字,它们是用来表示不同信息的。下面是一些例子,用来解释各种不同的字体各自代表什么意思。
下面是一段代码:
如果希望读者特别留意代码中的某些部分,相关内容会以粗体显示:
所有命令行的输入或输出都用下面的字体表示:
这个符号表示警告或者重要提示。
这个符号表示提示或者小窍门。
下载示例代码及彩色图片
本书的示例代码及所有截图,可以从http:www.packtpub.com通过个人账号下载,也可以访问华章图书官网http:www.hzbook.com,通过注册并登录个人账号下载。
|
|