Elasticsearch M&S
2020-10-29 10:05:27 0 举报
AI智能生成
ES认证工程师脑图
作者其他创作
大纲/内容
Modules
Thread Pool
线程池种类
线程池类型 fixed/scaling
CPU处理器数量
参考资料和补充阅读
《Lucene in Action》
《Elasticsearch源码解析与优化实战》
ES在其他领域的应用
搜索领域
数据分析
大数据
ES基础平台搭建
M & S
full restart
Shards Allocation Failure
Cluster Allocation Explain
常见分片分配失败原因
磁盘空间不足,超过watermark
Max Retry Limitation
可能的原因
JVM GC Concurrent Mode Failure
如何阅读GC Log
ES进程自动死亡-Kernal OOM
避免集群在重启过程中,发生过多分片转移
Monitoring 功能突然失效
HA&DR
Snapshot
Cross-Cluster-Replication
ILM:Index-lifecycle-management
Hot-Warm-Cold Architecture
TODO
查看邮件,考试时间为下周六,晚上9点到12点
Painless Script
字段的访问模式根据上下文不同而不同
常用函数
ctx.containsKey()
访问String的长度 .length()
创建Painless Script
Ingest Pipeline
Processors
Split
{{xxx.0}}:访问数组元素
Foreach
遍历操作数组元素
Pipeline
连接其它Pipeline
Condition
满足Script中定义的条件,才执行指定Processor
Analysis
Anatomy Of Analyzer
Char Filter
Step1: 对原始文档进行初步处理,如删除字符,删除HTML等
Tokenizers
Step2: 将原始文本分词为tokens, 并记录其顺序和所处位置偏移量
Token filters
Step3: 对切分后的 tokens进行加工,如删除停用词,替换同义词,转换大小写等等
Custom Analyzer
Specify Analyzer
Mapping
Field datatypes
Nested Type: 用于存储JsonArr
Joined
Dynamic Mapping
dynamic: true|false|strict 是否开启动态映射,根据预定义规则为未定义字段绑定字段
Aggreagations
聚合种类
Bucket: 桶聚合,将满足相同条件的文档聚合到一个桶中
Metric: 统计聚合,对一系列文档计算相同指标
Pipeline: 聚合其他聚合函数的结果
Matrix: 创造矩阵结果集
聚合特性
聚合结构
Search
原理介绍
查询过程
默认,适用于数据量大时:Query then Fetch
可选,适用于数据量小时:dfs_query_then_fetch
数据存储过程
text类型:_source 反向索引
其他类型:doc_values 聚合排序访问字段
NRT:Near Real Time
Query and Filter context
Query DSL
Term-Level Queries
不会对输入的内容进行分析,而是与其将 tokens(Keyword 类型整个为 token) 进行精确的匹配查询。
参数
operator: or/and, 用于表示多个token匹配之间的关系
minimum_should_match: 当operator为or时,可以用于指定最少需要匹配的token数量
Full text queries
输入内容将被分词为 tokens,然后与 tokens(Keyword 类型整个为 token)进行精确的匹配查询,匹配任意一个token 就算匹配
Analyzer则与被查询字段一致
Analyzer则与被查询字段一致
Compound queries
提供了bool查询和能够调整相关性评分的查询
Joining queries
分页
最简单: from+size
折中选项: Search After
大数据: scroll
Sort
建议在多值排序中,添加上_id(UUID)排序,这样所生成的sort value都将不同,有利于分页
对于数组对象,可以使用min/max/sum等函数,对其选择性排序
Highlight
其他特性
Cross Cluster Search: 跨集群查询
Search Template
基础知识
集群状态
green/yellow/red
节点角色
master/data/coordinator/ingest/ml
索引及分片
primary shard & replication shard
索引的最佳分片设置
什么是分片
基于时序划分索引
维护索引和分片的开销
每GB堆内存,不要存储超过20个Shards
保持单个shard大小在几GB到几十GB之间
Installation & Configuration
日志
日志滚动机制
JVM
Heap Size
堆内存大小设置
堆内存使用优化
GC
激活XPack功能
设置HTTP/TCP证书
证书相关配置
将证书密码存入keystore
ECE考试提醒:
密码设置
License
Trial License
安装插件
常见问题
Linux 系统优化
1. 关闭 JVM Swap
2. 堆内存设置为 节点内存一半,且不要超过32GB
3. 设置最大文件句柄数
2. 堆内存设置为 节点内存一半,且不要超过32GB
3. 设置最大文件句柄数
Indexing Data
创建 Index
配置节点属性: Configure node attributions
分片分配感知:Shard Allocation Awareness
当组成ES的节点来自多个机房,机架或物理机时,就可以启动该功能,
ES将分片智能的分配到不同物理空间中,来避免单点故障
ES将分片智能的分配到不同物理空间中,来避免单点故障
分片过滤: Shards Filtering
集群层面分片分配过滤: Cluster-Level Shard Allocation Filtering
索引层面分片分配过滤: Index-Level Shard Allocation Filtering
分片分配的常识
ES会尽可能将一个Shard的主从分片,放置在不同节点上,如果不行,则不分配副本分片
Mapping
nest type
数据索引总体流程
Coordiantor -> Primary Shard ->Replication Shard -> Primary Shard ->Coordiantor
Data 节点如何索引数据
TransLog机制:每次写请求都会放到 TransLog 中,默认每5S 执行一次 fsync,将 TransLog 刷入磁盘
Flush 操作同时会清空 TransLog
Flush 操作同时会清空 TransLog
Memory Buffer ---Refresh--> Filesystem Cache
默认每秒执行一次 Refresh 操作,将数据刷入 Filesystem Cache,此时数据可被查找
Flush
当被缓存数据大于500MB 或者 每30分钟执行一次 Flush 操作,将数据刷入一个 Segment, 同时清空 TransLog
Segment 组成 Lucne 的 Index, 每一个 Segment 都是一个功能齐全的倒排索引。
对于每一个搜索,都会查询索引中的段,每个段都会消耗资源,段越多,搜索性能越低
通过定期 force_merge 合并段
Reindex
当我们改变了ES的 Mapping等设置时,已存档的数据不会更改,Reindex可以帮我们解决这个问题
aliases
一个别名可以指向一个或多个索引,当指向多个索引时,需要指定某一个索引为写入索引
可以为别名设置 filter query,用于过滤结果集
Update/Delete Data
ES 段中的数据不可变,因此删除和更新操作也是写操作
每个Segment 都有一个 相应的.del 文件
删除请求: 在.del 文件将对应文档标记为删除,文档依旧会匹配查询,但是在结果集中被过滤。
更新请求:ES会为该文档指定一个新的版本号并写入,将旧的文档在.del 里面标记删除。
段合并:在段合并中,旧的数据和被删除的数据,不会被写入新段中
update_by_query: 指定查询语句和更新语句,更新所有查询语句所匹配的文档
ES 认证工程师要求
安装和配置
部署并启动ES集群
配置集群节点
使用ES Security 保护集群安全
使用ES Security 做角色权限管理
Indexing Data
客制化创建Index
对Index的文档进行增删改查
Index
Automatic Index Create:
Opeartion Type
ID自增
Routing
Read
GET
RealTime
Multi GET
Delete
Delete
Routing
Delete By Query
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/docs-delete-by-query.html
Update
Update
Update By Query
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/docs-update-by-query.html
定义和使用索引别名
定义并使用Index Template
定义并使用dynamic template
使用Reindex API and Update By Query API to reindex and/or update documents
定义和使用Ingest Pipeline,包括使用painless来修改文档
Queries
针对一个index的多个fields,对于term和phrase 编写和执行Search query
Search
Search API 特点
Multi-Index
Partial responses
查询方式
URL Search
Request Body Search
Doc value fields
query
Query DSL
Query and filter context
Compound queries
Boolean
Boosting
Constant Score
Disjunction Max
Function Score
Full text queries
intervals
Match
Match boolean prefix
Match phrase
Match phrase prefix
Multi-match
Common Terms Query
Query string
Simple query string
Joining queries
Netsted
Has Child
Has Parent
Parent ID
Match All
Span Queries
Specialized queries
distance_feature
more_like_this
percolate
rank_feature
script
script_score
wrapper
Term-level queries
sort
Highlighting
Scroll
编写和执行一个由多个queries和filters以boolean 连接的search query
compound Search
在query的返回中,高亮Search Item
Highlight
根据要求排序Search结果集
Sort
实现搜索查询结果的分页
使用Scroll API来获取大数量的结果集
将模糊匹配应用于查询
定义和使用search template
对跨集群场景编写并执行querys
Aggregations
编写并执行metric 和 bucket 聚合
编写并执行包含子聚合的聚合
编写并执行 pipeline aggregations
Mappings and Text Analysis
按需定义Mapping
按需创建一个客制化 analyzer
Define and use multi-fields with different data types and/or analyzers
Configure an index so that it properly maintains the relationships of nested arrays of objects
Configure an index that implements a parent/child relationship
z暂时跳过了,如果后面有遇到类似真题再学习吧
Cluster Administration
将Index的shards分配到指定的节点上
对一个index 配置 shards allocation awareness和 forced awareness
分析诊断shard issue 并 恢复集群健康
备份和恢复Cluster或Indices数据
Snapshot
配置Cluster使用 冷热温架构
配置集群使用CCR
其他要求
在学习的,额外的一点是要能找到知识点对应的文档位置
分布式选举
节点数量为奇数,防止脑裂
如何实现 Master 选举
ZenDiscovery: 每个节点将 Master Candidate 节点名字根据字典排序,并投票给排序第一的节点。
如果某一节点获得集群过半票数,则成为 Master 节点,否则开始下一轮选举
如果某一节点获得集群过半票数,则成为 Master 节点,否则开始下一轮选举
优化
优化数据Indexing 速度
使用 BulkRequest: 性能优于单个文档的请求
使用 BenchMark测试 BulkRequest 的最佳文档数量
使用多个 Worker或者线程来发送数据到 ES
关闭或提高 Refresh Interval
关闭数据复制,在数据初始化阶段
index.number_of_replicas: 0
硬件方面
给予文件系统 cache 更多内存
使用更快的硬件
RAID 阵列来讲数据索引到多个 SSD 上
使用 自动生成的 ID
使用CCR,让查询操作分流到 Follower Index 上
查询调优
收藏
0 条评论
下一页