Elasticsearch实战

副标题:无

作   者:拉杜·乔戈

分类号:

ISBN:9787115449153

微信扫一扫,移动浏览光盘

简介


本书主要展示如何使用Elasticsearch构建可扩展的搜索应用程序。书中覆盖了Elasticsearch的主要特性,从使用不同的分析器和查询类型进行相关性调优,到使用聚集功能进行实时性分析,还有地理空间搜索和文档过滤等更多吸引人的特性。全书共分两个部分,*部分解释了核心特性,内容主要涉及Elasticsearch的介绍,数据的索引、更新和删除,数据的搜索,数据的分析,使用相关性进行搜索,使用聚集来探索数据,文档间的关系等;第二部分介绍每个特性工作的更多细节及其对性能和可扩展性的影响,以便对核心功能进行产品化,内容主要涉及水平扩展和性能提升等。此外,本书还有6个附录(网上下载),提供了读者应该知道的特性,展示了关于地理空间搜索和聚集,如何管理Elasticsearch插件,学习在搜索结果中如何高亮查询单词,在生产环境中用来协助管理Elasticsearch的第三方的监控工具有哪些,如何使用Percolator过滤为多个查询匹配少量文档,如何使用不同的建议器来实现自动完成的功能。

目录


*部分

第1章 Elasticsearch介绍 2

1.1 用Elasticsearch解决搜索问题 3

1.1.1 提供快速查询 3

1.1.2 确保结果的相关性 4

1.1.3 超越精确匹配 5

1.2 探索典型的Elasticsearch使用案例 6

1.2.1 将Elasticsearch作为主要的后端系统 7

1.2.2 将Elasticsearch添加到现有的系统 7

1.2.3 将Elasticsearch和现有工具一同使用 8

1.2.4 Elasticsearch的主要特性 10

1.2.5 扩展Lucene的功能 10

1.2.6 在Elasticsearch中组织数据 12

1.2.7 安装Java语言 12

1.2.8 下载并启动Elasticsearch 13

1.2.9 验证是否工作 14

1.3 小结 16

第2章 深入功能 17

2.1 理解逻辑设计:文档、类型和索引 18

2.1.1 文档 19

2.1.2 类型 20

2.1.3 索引 21

2.2 理解物理设计:节点和分片 21

2.2.1 创建拥有一个或多个节点的集群 22

2.2.2 理解主分片和副本分片 23

2.2.3 在集群中分发分片 25

2.2.4 分布式索引和搜索 26

2.3 索引新数据 27

2.3.1 通过cURL索引一篇文档 28

2.3.2 创建索引和映射类型 30

2.3.3 通过代码样例索引文档 31

2.4 搜索并获取数据 32

2.4.1 在哪里搜索 33

2.4.2 回复的内容 33

2.4.3 如何搜索 36

2.4.4 通过ID获取文档 39

2.5 配置Elasticsearch 40

2.5.1 在elasticsearch.yml中指定集群的名称 40

2.5.2 通过logging.yml指定详细日志记录 41

2.5.3 调整JVM设置 41

2.6 在集群中加入节点 42

2.6.1 启动第二个节点 43

2.6.2 增加额外的节点 44

2.7 小结 45

第3章 索引、更新和删除数据 47

3.1 使用映射来定义各种文档 48

3.1.1 检索和定义映射 49

3.1.2 扩展现有的映射 50

3.2 用于定义文档字段的核心类型 51

3.2.1 字符串类型 52

3.2.2 数值类型 54

3.2.3 日期类型 55

3.2.4 布尔类型 56

3.3 数组和多字段 56

3.3.1 数组 56

3.3.2 多字段 57

3.4 使用预定义字段 58

3.4.1 控制如何存储和搜索文档 59

3.4.2 识别文档 61

3.5 更新现有文档 63

3.5.1 使用更新API 64

3.5.2 通过版本来实现并发控制 66

3.6 删除数据 69

3.6.1 删除文档 70

3.6.2 删除索引 71

3.6.3 关闭索引 72

3.6.4 重新索引样本文档 73

3.7 小结 73

第4章 搜索数据 74

4.1 搜索请求的结构 75

4.1.1 确定搜索范围 75

4.1.2 搜索请求的基本模块 76

4.1.3 基于请求主体的搜索请求 78

4.1.4 理解回复的结构 81

4.2 介绍查询和过滤器DSL 82

4.2.1 match查询和term过滤器 82

4.2.2 常用的基础查询和过滤器 85

4.2.3 match查询和term过滤器 91

4.2.4 phrase_prefix查询 92

4.3 组合查询或复合查询 93

4.3.1 bool查询 93

4.3.2 bool过滤器 96

4.4 超越match和过滤器查询 98

4.4.1 range查询和过滤器 98

4.4.2 prefix查询和过滤器 99

4.4.3 wildcard查询 100

4.5 使用过滤器查询字段的存在性 102

4.5.1 exists过滤器 102

4.5.2 missing过滤器 102

4.5.3 将任何查询转变为过滤器 103

4.6 为任务选择*好的查询 104

4.7 小结 105

第5章 分析数据 106

5.1 什么是分析 106

5.1.1 字符过滤 107

5.1.2 切分为分词 108

5.1.3 分词过滤器 108

5.1.4 分词索引 108

5.2 为文档使用分析器 109

5.2.1 在索引创建时增加分析器 109

5.2.2 在Elasticsearch的配置中添加分析器 111

5.2.3 在映射中指定某个字段的分析器 112

5.3 使用分析API来分析文本 113

5.3.1 选择一个分析器 114

5.3.2 通过组合即兴地创建分析器 115

5.3.3 基于某个字段映射的分析 115

5.3.4 使用词条向量API来学习索引词条 116

5.4 分析器、分词器和分词过滤器 117

5.4.1 内置的分析器 117

5.4.2 分词器 119

5.4.3 分词过滤器 122

5.5 N元语法、侧边N元语法和滑动窗口 128

5.5.1 一元语法过滤器 128

5.5.2 二元语法过滤器 129

5.5.3 三元语法过滤器 129

5.5.4 设置min_gram和max_gram 129

5.5.5 侧边N元语法过滤器 129

5.5.6 N元语法的设置 130

5.5.7 滑动窗口分词过滤器 131

5.6 提取词干 132

5.6.1 算法提取词干 133

5.6.2 使用字典提取词干 133

5.6.3 重写分词过滤器的词干提取 134

5.7 小结 134

第6章 使用相关性进行搜索 136

6.1 Elasticsearch的打分机制 137

6.1.1 文档打分是如何运作的 137

6.1.2 词频 137

6.1.3 逆文档频率 138

6.1.4 Lucene评分公式 138

6.2 其他打分方法 139

6.3 boosting 141

6.3.1 索引期间的boosting 142

6.3.2 查询期间的boosting 142

6.3.3 跨越多个字段的查询 143

6.4 使用“解释”来理解文档是如何被评分的 144

6.5 使用查询再打分来减小评分操作的性能影响 147

6.6 使用function_score来定制得分 148

6.6.1 weight函数 149

6.6.2 合并得分 150

6.6.3 field_value_factor函数 151

6.6.4 脚本 152

6.6.5 随机 152

6.6.6 衰减函数 153

6.6.7 配置选项 155

6.7 尝试一起使用它们吧 156

6.8 使用脚本来排序 157

6.9 字段数据 158

6.9.1 字段数据缓存 158

6.9.2 字段数据用在哪里 159

6.9.3 管理字段数据 160

6.10 小结 163

第7章 使用聚集来探索数据 164

7.1 理解聚集的具体结构 166

7.1.1 理解聚集请求的结构 166

7.1.2 运行在查询结果上的聚集 168

7.1.3 过滤器和聚集 169

7.2 度量聚集 170

7.2.1 统计数据 171

7.2.2 高级统计 172

7.2.3 近似统计 173

7.3 多桶型聚集 176

7.3.1 terms聚集 177

7.3.2 range聚集 183

7.3.3 histogram聚集 185

7.4 嵌套聚集 187

7.4.1 嵌套多桶聚集 189

7.4.2 通过嵌套聚集获得结果分组 190

7.4.3 使用单桶聚集 192

7.5 小结 196

第8章 文档间的关系 197

8.1 定义文档间关系的选项概览 197

8.1.1 对象类型 198

8.1.2 嵌套类型 200

8.1.3 父子关系 200

8.1.4 反规范化 200

8.2 将对象作为字段值 202

8.2.1 映射和索引对象 203

8.2.2 在对象中搜索 204

8.3 嵌套类型:联结嵌套的文档 206

8.3.1 映射并索引嵌套文档 207

8.3.2 搜索和聚集嵌套文档 210

8.4 父子关系:关联分隔的文档 216

8.4.1 子文档的索引、更新和删除 218

8.4.2 在父文档和子文档中搜索 220

8.5 反规范化:使用冗余的数据管理 227

8.5.1 反规范化的使用案例 228

8.5.2 索引、更新和删除反规范化的数据 230

8.5.3 查询反规范化的数据 233

8.6 应用端的连接 234

8.7 小结 235

第二部分

第9章 向外扩展 238

9.1 向Elasticsearch集群加入节点 238

9.2 发现其他Elasticsearch节点 241

9.2.1 通过广播来发现 241

9.2.2 通过单播来发现 242

9.2.3 选举主节点和识别错误 243

9.2.4 错误的识别 244

9.3 删除集群中的节点 245

9.4 升级Elasticsearch的节点 250

9.4.1 进行轮流重启 250

9.4.2 *小化重启后的恢复时间 251

9.5 使用_cat API 252

9.6 扩展策略 254

9.6.1 过度分片 254

9.6.2 将数据切分为索引和分片 255

9.6.3 *化吞吐量 256

9.7 别名 257

9.7.1 什么是别名 258

9.7.2 别名的创建 259

9.8 路由 261

9.8.1 为什么使用路由 261

9.8.2 路由策略 262

9.8.3 使用_search_shards API来决定搜索在哪里执行 263

9.8.4 配置路由 265

9.8.5 结合路由和别名 265

9.9 小结 267

第10章 提升性能 268

10.1 合并请求 269

10.1.1 批量索引、更新和 删除 269

10.1.2 多条搜索和多条获取 API接口 273

10.2 优化Lucene分段的 处理 276

10.2.1 刷新和冲刷的阈值 276

10.2.2 合并以及合并策略 279

10.2.3 存储和存储限流 282

10.3 充分利用缓存 285

10.3.1 过滤器和过滤器 缓存 285

10.3.2 分片查询缓存 291

10.3.3 JVM堆和操作系统 缓存 293

10.3.4 使用预热器让缓存 热身 296

10.4 其他的性能权衡 297

10.4.1 大规模的索引还是 昂贵的搜索 298

10.4.2 调优脚本,要么 别用它 301

10.4.3 权衡网络开销,更少的 数据和更好的分布式 得分 305

10.4.4 权衡内存,进行深度 分页 308

10.5 小结 310

第11章 管理集群 311

11.1 改善默认的配置 311

11.1.1 索引模板 312

11.1.2 默认的映射 315

11.2 分配的感知 318

11.2.1 基于分片的分配 318

11.2.2 强制性的分配感知 319

11.3 监控瓶颈 320

11.3.1 检查集群的健康 状态 320

11.3.2 CPU:慢日志、热线程和 线程池 322

11.3.3 内存:堆的大小、字段和 过滤器缓存 326

11.3.4 操作系统缓存 330

11.3.5 存储限流 330

11.4 备份你的数据 331

11.4.1 快照API 331

11.4.2 将数据备份到共享的文件系统 332

11.4.3 从备份中恢复 335

11.4.4 使用资料库插件 336

11.5 小结 337

附录A 处理地理空间的数据(网上下载)

附录B 插件(网上下载)

附录C 高亮(网上下载)

附录D Elasticsearch的监控插件(网上下载)

附录E 使用渗滤器将搜索颠倒过来(网上下载)

附录F 为自动完成和“您是指”功能使用建议器(网上下载)

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Elasticsearch实战
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon