猜你喜欢
Elasticsearch技术解析与实战

Elasticsearch技术解析与实战

书籍作者:朱林 ISBN:9787111553274
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:7780
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介
Elasticsearch是一个强大的搜索引擎,提供了近实时的索引、搜索、分析功能。本书作者根据自己多年的开发经验,总结了使用和开发Elasticsearch的实战经验。本书全面介绍Elasticsearch系统结构与功能配置,以及实际应用案例,包括工具、方法、原则和佳实践。主要内容包括Elasticsearch基本概念与配置,索引的基本概念、管理与设置,架构设计中的字段、对象、映射,搜索中的结构、各种查询方式,聚合中的数字聚合、桶聚合、管道聚合,集群中的监控方式、配置案例,分析模块中的中文分词器、过滤器,高级设置中的关键点,监控与安全方面的技巧,ELK综合示例等。不管你是全文检索和Elasticsearch的初学者,还是Elasticsearch用户,你都能从书中获益。
前言
Elasticsearch是目前全球最受欢迎的全文搜索引擎。初识Elasticsearch是在2012年的一个项目中,当时Elasticsearch还是0.19.0版本,但是功能已经比较强大,只是接口稍微有点复杂。到了2015年年初,公司开发了一款日志分析产品,它实时不间断地采集用户网络中各种不同系统的日志,然后从中分析系统的安全情况、系统情况、业务情况。最初所有的数据都存储在MySQL中,随着日志的不断增加,MySQL搜索速度越来越慢。后来在更换技术架构选型的时候又想到了Elasticsearch,这个时候Elasticsearch已经是1.6.0版本了。我们对此进行了简单的测试,在上亿条的数据搜索中很多都在一秒内完成,在上亿条的数据中进行统计分析大多也是在秒级完成,它展示了强大实力。我们顺势就把Elasticsearch整合到了现在的产品中,取得了很好效果。到了2016年3月的时候,Elasticsearch发布了2.3.0版本,各方面更加成熟,我们的产品又再一次升级到这个新版本上。
  Elasticsearch产品的更新变化非常快,在我们开发研究的过程中基本上找不到新版本的中文资料,目前市场上介绍Elasticsearch的中文书籍都是在版本1.0左右,甚至更早,这些书的很多内容尤其是开发接口相关的部分都已经过时,没有办法在新版本中使用。所以我们开发的过程中基本上都是研究官方文档,有时候甚至研究它的源码才能解决问题。在接口选择的时候我们在HTTP JSON接口和Java接口中做了取舍,我们当时分析HTTP JSON接口最终还是要转换成Java接口,不如直接使用Java接口,一是效率可能更高,二是在部署实施的时候减少一个端口,三是对后续的升级更有利,比如后续增加权限认证等。但这些东西都没有资料,我们基本上都是研究系统源码来克服的。在后续研究过程中,我们发现HTTP接口转换到Java接口是有规律的,所以对HTTP接口的掌握对后续Elasticsearch的开发和扩展也有很大的帮助。在持续研究的过程中,我们积累了大量经验,并想把这些经验分享给更多需要的人。后来我把这个想法给出版社的吴怡编辑做了沟通,她非常支持我们的想法,便有了这本书。
  本书首先介绍Elasticsearch的相关基础知识,然后由浅入深地介绍Elasticsearch索引查询相关的知识,包括索引、映射、搜索、聚合,接着介绍Elasticsearch的集群、分词、重要的配置等高级功能,以及Elasticsearch相关的其他产品,包括告警、监控、权限管理,最后通过一个ELK示例结束本书。在写作的时候考虑到读者的接受能力,由浅入深地进行讲解,建议读者从前往后阅读。
  本书主要内容包括:
  第1章 “Elasticsearch入门”,介绍Elasticsearch是什么、Apache Lucene的基础知识、Elasticsearch的术语、JSON介绍、Elasticsearch的安装运行、Elasticsearch的HTTP接口和Elasticsearch的Java API接口。
  第2章 “索引”,介绍和Elasticsearch索引相关的接口,包括索引管理、索引映射管理、索引别名、索引设置、索引监控、索引其他重要接口以及文档管理。
  第3章 “映射”,介绍Elasticsearch文档的内部结构,Elasticsearch支持的字段类型,除此之外,本章还将展示Elasticsearch内置的元字段,映射的参数和动态映射功能。
  第4章 “搜索”,详细介绍和搜索相关的知识,包括搜索的详细参数,搜索的评分机制、滚动查询、系统内部隐藏内容的查询、搜索模板等;接着介绍Elasticsearch的领域查询语言DSL(Domain-specific Language)相关的知识点;最后介绍Elasticsearch的精简查询接口。
  第5章 “聚合”,聚合可以对文档中的数据进行统计汇总、分组等,通过聚合可以完成很多的统计功能,该章介绍聚合相关的知识,包括度量聚合、分组聚合和管道聚合。
  第6章 “集群管理”,详细介绍和集群相关的内容,包括集群的监控、集群分片迁移、集群的节点配置、集群发现、集群平衡的原理和配置。
  第7章 “索引分词器”,介绍Elasticsearch的分词器和分词的原理,以及如何添加新的分词器等;还介绍Elasticsearch的插件相关知识,包括插件安装等。
  第8章 “高级配置”,介绍Elasticsearch的高级配置,包括网络配置、脚本配置、快照和恢复配置、线程池配置和索引配置。
  第9章 “告警、监控和权限管理”,介绍Elasticsearch官方支持的几个比较好的插件:Watcher、Marvel、Shield,它们可以对Elasticsearch进行告警、监控和权限管理。
  第10章 “ELK应用”,介绍Elasticsearch与另外两个产品Logstash和Kibana如何组合使用,Logstash是对日志进行收集和处理,Kibana是对存储在Elasticsearch中的索引进行展示和报表分析;最后通过一个简单的示例来介绍ELK几个产品是如何关联的。
  在编写本书的时候,Elasticsearch的最新版本是2.2.0,但本书准备正式出版的时候,Elasticsearch发布了最新的5.0版本。所以本书增加了一个附录专门介绍5.0版本的特性与改进。本书前面的部分截图是2.2.0版本的,书中所有的例子和功能都可以在Elasticsearch 2.3.3下运行,大部分的功能都可以在5.0下运行,详细的新版本差别请参考附录部分。本书中的例子大部分都是HTTP接口的,这些接口的测试
目录
前言
第1章 Elasticsearch入门1
1.1 Elasticsearch是什么1
1.1.1 Elasticsearch的历史2
1.1.2 相关产品3
1.2 全文搜索3
1.2.1 Lucene介绍4
1.2.2 Lucene倒排索引4
1.3 基础知识6
1.3.1 Elasticsearch术语及概念6
1.3.2 JSON介绍10
1.4 安装配置12
1.4.1 安装Java12
1.4.2 安装Elasticsearch12
1.4.3 配置13
1.4.4 运行15
1.4.5 停止17
1.4.6 作为服务17
1.4.7 版本升级19
1.5 对外接口21
1.5.1 API约定22
1.5.2 REST介绍25
1.5.3 Head插件安装26
1.5.4 创建库27
1.5.5 插入数据28
1.5.6 修改文档28
1.5.7 查询文档29
1.5.8 删除文档29
1.5.9 删除库30
1.6 Java接口30
1.6.1 Java接口说明30
1.6.2 创建索引文档33
1.6.3 增加文档34
1.6.4 修改文档35
1.6.5 查询文档35
1.6.6 删除文档35
1.7 小结36
第2章 索引37
2.1 索引管理37
2.1.1 创建索引37
2.1.2 删除索引39
2.1.3 获取索引39
2.1.4 打开/关闭索引40
2.2 索引映射管理41
2.2.1 增加映射41
2.2.2 获取映射44
2.2.3 获取字段映射45
2.2.4 判断类型是否存在46
2.3 索引别名46
2.4 索引配置51
2.4.1 更新索引配置51
2.4.2 获取配置52
2.4.3 索引分析52
2.4.4 索引模板54
2.4.5 复制配置55
2.4.6 重建索引56
2.5 索引监控60
2.5.1 索引统计60
2.5.2 索引分片62
2.5.3 索引恢复63
2.5.4 索引分片存储64
2.6 状态管理64
2.6.1 清除缓存64
2.6.2 索引刷新64
2.6.3 冲洗65
2.6.4 合并索引65
2.7 文档管理66
2.7.1 增加文档66
2.7.2 更新删除文档69
2.7.3 查询文档73
2.7.4 多文档操作76
2.7.5 索引词频率80
2.7.6 查询更新接口83
2.8 小结87
第3章 映射88
3.1 概念88
3.2 字段数据类型90
3.2.1 核心数据类型91
3.2.2 复杂数据类型96
3.2.3 地理数据类型100
3.2.4 专门数据类型106
3.3 元字段108
3.3.1 _all字段109
3.3.2 _field_names字段109
3.3.3 _id字段110
3.3.4 _index字段110
3.3.5 _meta字段111
3.3.6 _parent字段111
3.3.7 _routing字段112
3.3.8 _source字段114
3.3.9 _type字段115
3.3.10 _uid字段115
3.4 映射参数116
3.4.1 analyzer参数116
3.4.2 boost参数118
3.4.3 coerce参数119
3.4.4 copy_to参数120
3.4.5 doc_values参数121
3.4.6 dynamic参数122
3.4.7 enabled参数122
3.4.8 fielddata参数123
3.4.9 format参数126
3.4.10 geohash参数128
3.4.11 geohash_precision参数129
3.4.12 geohash_prefix参数130
3.4.13 ignore_above参数131
3.4.14 ignore_malformed参数131
3.4.15 include_in_all参数132
3.4.16 index参数133
3.4.17 index_options参数133
3.4.18 lat_lon参数134
3.4.19 fields参数135
3.4.20 norms参数136
3.4.21 null_value参数137
3.4.22 position_increment_gap参数137
3.4.23 precision_step参数138
3.4.24 properties参数138
3.4.25 search_analyzer参数139
3.4.26 similarity参数140
3.4.27 store参数141
3.4.28 term_vector参数141
3.5 动态映射142
3.5.1 概念142
3.5.2 _default_映射143
3.5.3 动态字段映射143
3.5.4 动态模板145
3.5.5 重写默认模板148
3.6 小结148
第4章 搜索149
4.1 深入搜索149
4.1.1 搜索方式149
4.1.2 重新评分153
4.1.3 滚动查询请求155
4.1.4 隐藏内容查询158
4.1.5 搜索相关函数161
4.1.6 搜索模板164
4.2 查询DSL167
4.2.1 查询和过滤的区别167
4.2.2 全文搜索168
4.2.3 字段查询179
4.2.4 复合查询183
4.2.5 连接查询188
4.2.6 地理查询190
4.2.7 跨度查询197
4.2.8 高亮显示200
4.3 简化查询203
4.4 小结206
第5章 聚合207
5.1 聚合的分类207
5.2 度量聚合209
5.2.1 平均值聚合209
5.2.2 基数聚合211
5.2.3 最大值聚合213
5.2.4 最小值聚合214
5.2.5 和聚合214
5.2.6 值计数聚合215
5.2.7 统计聚合215
5.2.8 百分比聚合215
5.2.9 百分比分级聚合216
5.2.10 最高命中排行聚合217
5.2.11 脚本度量聚合217
5.2.12 地理边界聚合221
5.2.13 地理重心聚合222
5.3 分组聚合223
5.3.1 子聚合224
5.3.2 直方图聚合226
5.3.3 日期直方图聚合230
5.3.4 时间范围聚合233
5.3.5 范围聚合234
5.3.6 过滤聚合235
5.3.7 多重过滤聚合236
5.3.8 空值聚合238
5.3.9 嵌套聚合239
5.3.10 采样聚合240
5.3.11 重要索引词聚合242
5.3.12 索引词聚合245
5.3.13 总体聚合251
5.3.14 地理点距离聚合251
5.3.15 地理散列网格聚合253
5.3.16 IPv4范围聚合255
5.4 管道聚合257
5.4.1 平均分组聚合259
5.4.2 移动平均聚合261
5.4.3 总和分组聚合262
5.4.4 总和累计聚合262
5.4.5 最大分组聚合264
5.4.6 最小分组聚合265
5.4.7 统计分组聚合266
5.4.8 百分位分组聚合268
5.4.9 差值聚合269
5.4