第1章 初识Elastic Stack 1
1.1 从ELK到Elastic Stack 1
1.1.1 历史 1
1.1.2 版本演变 2
1.1.3 许可授权 2
1.1.4 应用场景 3
1.2 Elasticsearch概览 6
1.2.1 安装与配置 6
1.2.2 体验Elasticsearch 10
1.3 Kibana概览 11
1.3.1 安装与配置 11
1.3.2 连接Elasticsearch 12
1.3.3 体验Kibana 12
1.3.4 导入样例数据 16
1.4 Logstash概览 18
1.4.1 安装Logstash 18
1.4.2 启动Logstash 18
1.4.3 连接Elasticsearch 19
1.5 Beats概览 21
1.5.1 安装Filebeat 21
1.5.2 配置Filebeat 21
1.5.3 启动Filebeat 23
1.6 本章小结 23
第2章 Elasticsearch原理与实现 25
2.1 全文检索与倒排索引 25
2.1.1 全文检索 26
2.1.2 倒排索引 27
2.1.3 Elasticsearch索引 28
2.1.4 Elasticsearch映射 28
2.2 文档字段 31
2.2.1 字段索引 32
2.2.2 字段存储 34
2.2.3 字段参数 36
2.2.4 元字段 37
2.2.5 字段限制 38
2.3 字段数据类型 39
2.3.1 核心类型 39
2.3.2 衍生类型 42
2.3.3 多数据类型 43
2.4 分片与复制 45
2.4.1 分片与集群 45
2.4.2 路由 46
2.4.3 容量规划 47
2.4.4 副本 48
2.5 客户端API概览 49
2.5.1 REST接口 49
2.5.2 Painless脚本 51
2.5.3 Java API 52
2.6 本章小结 54
第3章 Elasticsearch索引与文档 55
3.1 索引别名与配置 55
3.1.1 索引别名 56
3.1.2 索引配置 60
3.2 动态映射与索引模板 64
3.2.1 动态字段 64
3.2.2 动态模板 65
3.2.3 索引模板 67
3.2.4 _mapping接口 68
3.3 容量控制与缓存机制 69
3.3.1 _plit接口 69
3.3.2 _shrink接口 71
3.3.3 _reindex接口 72
3.3.4 缓存机制 73
3.3.5 查看运行状态 74
3.4 操作文档 75
3.4.1 索引文档 76
3.4.2 获取文档 77
3.4.3 删除文档 79
3.4.4 更新文档 80
3.4.5 批量操作 83
3.5 本章小结 83
第4章 Elasticsearch分析与检索 85
4.1 _search接口 85
4.1.1 基于URI 85
4.1.2 基于请求体 87
4.2 分页与排序 88
4.2.1 from/size参数 88
4.2.2 scroll参数 89
4.2.3 search_after参数 91
4.2.4 sort参数 92
4.3 字段投影 93
4.3.1 _source参数 93
4.3.2 stored_fields参数 94
4.3.3 docvalue_fields参数 95
4.3.4 script_fields参数 96
4.4 分析器与规整器 97
4.4.1 设置分析器 97
4.4.2 _analyze接口 99
4.4.3 _termvectors接口 99
4.5 内置分析器与中文分析器 101
4.5.1 standard分析器 102
4.5.2 stop分析器 102
4.5.3 pattern分析器 103
4.5.4 custom分析器 103
4.5.5 其他内置分析器 104
4.5.6 中文分析器 104
4.6 其他检索接口 105
4.6.1 _count接口 105
4.6.2 _msearch接口 106
4.6.3 _scripts接口 107
4.6.4 辅助接口 108
4.7 本章小结 111
第5章 叶子查询与模糊查询 112
5.1 基于词项的查询 112
5.1.1 term、terms和terms_set 113
5.1.2 range与exists 115
5.1.3 使用模式匹配 116
5.1.4 type与ids 118
5.1.5 停止词与common查询 119
5.2 基于全文的查询 122
5.2.1 词项匹配 122
5.2.2 短语匹配 124
5.2.3 查询字符串 125
5.2.4 间隔查询 128
5.3 模糊查询与纠错提示 129
5.3.1 Levenshtein与NGram 130
5.3.2 模糊查询 130
5.3.3 纠错与提示 132
5.4 本章小结 137
第6章 相关性评分与组合查询 138
6.1 相关性评分 138
6.1.1 相关度模型 138
6.1.2 TF/IDF 140
6.1.3 BM25 141
6.1.4 相关度解释 142
6.1.5 相关度权重 143
6.2 组合查询与相关度组合 144
6.2.1 bool组合查询 145
6.2.2 dis_max组合查询 146
6.2.3 constant_score查询 147
6.2.4 boosting查询 147
6.2.5 function_score查询 148
6.2.6 相关度组合 153
6.3 本章小结 156
第7章 聚集查询 158
7.1 指标聚集 158
7.1.1 平均值聚集 158
7.1.2 计数聚集与极值聚集 161
7.1.3 统计聚集 162
7.1.4 百分位聚集 163
7.2 使用范围分桶 164
7.2.1 数值范围 165
7.2.2 间隔范围 167
7.2.3 聚集嵌套 169
7.3 使用词项分桶 170
7.3.1 terms聚集 170
7.3.2 significant_terms聚集 172
7.3.3 significant_text聚集 175
7.3.4 样本 176
7.4 单桶聚集与聚集组合 178
7.4.1 单桶聚集 178
7.4.2 聚集组合 182
7.4.3 邻接矩阵 183
7.5 管道聚集 184
7.5.1 基于兄弟聚集 185
7.5.2 基于父聚集 186
7.6 矩阵聚集 190
7.7 本章小结 191
第8章 处理特殊数据类型 192
8.1 父子关系 192
8.1.1 join类型 192
8.1.2 has_child查询 194
8.1.3 has_parent查询 194
8.1.4 parent_id查询 195
8.1.5 children聚集 195
8.1.6 parent聚集 196
8.2 嵌套类型 197
8.2.1 nested类型 198
8.2.2 nested查询 199
8.2.3 nested聚集 200
8.2.4 reverse_nested聚集 200
8.3 处理地理信息 201
8.3.1 GeoHash 201
8.3.2 地理类型字段 204
8.3.3 geo_shape查询 207
8.3.4 geo_bounding_box查询 208
8.3.5 geo_distance查询 209
8.3.6 geo_polygon查询 209
8.3.7 geohash_grid与geo_distance 210
8.4 使用SQL语言 211
8.4.1 _sql接口 212
8.4.2 SQL语法 214
8.4.3 操作符与函数 215
8.5 本章小结 216
第9章 Kibana文档发现 218
9.1 索引模式 218
9.1.1 创建索引模式 218
9.1.2 管理模式字段 220
9.2 时间范围与过滤器 222
9.2.1 数据发现界面结构 223
9.2.2 使用时间过滤文档 223
9.2.3 自定义过滤器 224
9.3 使用查询语言 226
9.3.1 修改查询语言 226
9.3.2 使用Lucene语言 228
9.3.3 使用KQL语言 229
9.3.4 查询对象 230
9.4 文档展示与字段过滤 232
9.4.1 柱状图 232
9.4.2 文档展示 233
9.4.3 添加过滤器 234
9.4.4 分享 236
9.5 本章小结 238
第10章 Kibana文档可视化 240
10.1 二维坐标图 240
10.1.1 面积图 240
10.1.2 折线图与柱状图 242
10.1.3 指标叠加 243
10.1.4 桶型叠加 246
10.2 圆形与弧形 248
10.2.1 饼图配置 248
10.2.2 饼图叠加 249
10.2.3 目标 251
10.2.4 仪表 252
10.3 热度 254
10.3.1 热力图 254
10.3.2 标签云 255
10.3.3 坐标地图 257
10.3.4 区域地图 258
10.4 表格与控件 258
10.4.1 表格 259
10.4.2 控件 260
10.5 本章小结 262
第11章 Kibana综合展示 263
11.1 仪表盘 263
11.1.1 创建仪表盘 264
11.1.2 控件作用 266
11.1.3 分享 267
11.2 画布 268
11.2.1 使用workpad 268
11.2.2 管理图片资源 270
11.2.3 添加数据元素 272
11.3 监控 274
11.3.1 开启监控 274
11.3.2 查看监控图表 275
11.4 地图 277
11.4.1 叠加图层 278
11.4.2 使用聚集 281
11.4.3 矢量图层 282
11.5 本章小结 285
第12章 Logstash结构与配置 286
12.1 Logstash体系结构 286
12.1.1 插件 287
12.1.2 事件 289
12.1.3 队列 291
12.1.4 Logstash监控 293
12.2 管道配置 294
12.2.1 主管道配置 294
12.2.2 单管道配置 296
12.2.3 多管道配置 300
12.3 编解码器插件 301
12.3.1 plain编解码器 301
12.3.2 line编解码器 302
12.3.3 json编解码器 304
12.3.4 序列化编解码器 304
12.3.5 collectd编解码器 306
12.3.6 cef编解码器 307
12.4 本章小结 307
第13章 输入与输出插件 310
13.1 beats与elasticsearch插件 310
13.1.1 beats插件 310
13.1.2 elasticsearch插件 311
13.1.3 dead_letter_queue插件 315
13.2 面向文件的插件 316
13.2.1 事件属性 316
13.2.2 读取模式 317
13.2.3 SinceDB文件 318
13.2.4 多文件 319
13.2.5 配置参数 320
13.2.6 文件输出插件 321
13.3 面向关系型数据库的插件 322
13.3.1 连接与语句 322
13.3.2 执行状态 323
13.3.3 配置参数 324
13.4 面向消息中间件的插件 325
13.4.1 kafka插件 325
13.4.2 redis插件 329
13.4.3 rabbitmq插件 331
13.5 面向通信协议的插件 332
13.5.1 TCP 333
13.5.2 HTTP 334
13.5.3 UDP 339
13.5.4 IMAP与SMTP 340
13.6 其他插件 342
13.6.1 执行命令 342
13.6.2 自动生成 344
13.6.3 云服务 344
13.6.4 未绑定插件 345
13.7 本章小结 346
第14章 过滤器 348
14.1 全文数据结构化 348
14.1.1 grok过滤器 349
14.1.2 dissect过滤器 351
14.2 处理半结构化文本 354
14.2.1 json过滤器 354
14.2.2 xml过滤器 355
14.2.3 csv过滤器 356
14.2.4 kv过滤器 357
14.3 事件聚集 358
14.3.1 task_id与code 359
14.3.2 map与map_meta 361
14.3.3 其他参数 363
14.4 使用外部资源 364
14.4.1 Elasticsearch 364
14.4.2 JDBC 366
14.4.3 IP地址 370
14.4.4 Memcached 371
14.4.5 HTTP 372
14.5 数据转换 374
14.5.1 mutate过滤器 374
14.5.2 de_dot过滤器 375
14.5.3 translate过滤器 376
14.5.4 date过滤器 377
14.5.5 urldecode与useragent 378
14.6 数据添加与删除 378
14.6.1 uuid与fingerprint 378
14.6.2 cidr过滤器 380
14.6.3 产生事件 381
14.6.4 截取 381
14.6.5 删除 382
14.6.6 限流 383
14.6.7 其他过滤器 384
14.7 本章小结 385
第15章 Beats原理与结构 387
15.1 Beats体系结构 387
15.1.1 共有组件 388
15.1.2 Beats配置 390
15.1.3 Beats与Kibana 392
15.2 Beats处理器 395
15.2.1 添加逻辑信息 397
15.2.2 添加基础信息 399
15.2.3 添加云信息 400
15.2.4 删除数据 402
15.2.5 转换数据 403
15.3 Beats输出组件 405
15.3.1 输出到Elasticsearch 406
15.3.2 输出到Logstash 409
15.3.3 输出到Kafka 411
15.3.4 输出到Redis 412
15.3.5 输出到文件 414
15.4 本章小结 414
第16章 Beats采集数据 416
16.1 网络通信 416
16.1.1 安装配置 416
16.1.2 通信协议 417
16.1.3 通信流程 420
16.1.4 本地进程 422
16.1.5 事件属性 422
16.2 文件数据 422
16.2.1 输入类型 423
16.2.2 模块 428
16.2.3 文件读取 430
16.3 指标数据 431
16.3.1 Metricbeat 432
16.3.2 Heartbeat 434
16.3.3 Uptime 436
16.4 操作系统信息 438
16.4.1 Auditbeat 438
16.4.2 Journalbeat 441
16.4.3 Winlogbeat 442
16.5 本章小结 443