调优
异常情况
集群健康状态
GREEN是最健康的状态,说明所有的分片包括副本都可用。这种情况Elasticsearch集群所有的主分片和副本分片都已分配,Elasticsearch集群是100%可用的。
YELLOW:主分片可用,但是副本分片不可用。这种情况Elasticsearch集群所有的主分片已经分配了,但至少还有一个副本是未分配的。不会有数据丢失,所以搜索结果依然是完整的。不过,集群高可用性在某种程度上会被弱化。可以把yellow想象成一个需要关注的warnning,该情况不影响索引读写,一般会自动恢复。
RED:存在不可用的主分片。此时执行查询虽然部分数据仍然可以查到,但实际上已经影响到索引读写,需要重点关注。这种情况Elasticsearch集群至少一个主分片(以及它的全部副本)都在缺失中。这意味着索引已缺少数据,搜索只能返回部分数据,而分配到这个分片上的请求都返回异常。
Elasticsearch集群异常状态(RED、YELLOW)原因分析
优化
ElasticSearch的一些调优案例汇总
案例:
文档:
Elasticsearch重要文章之五:预加载fielddata
万字长文:可能是最全面的 Elasticsearch 性能调优指南
腾讯云ES:让你的ES查询性能起飞:Elasticsearch 查询优化攻略“一网打尽”
预加载
设置 index.store.preload ,用于预加载索引数据到文件系统缓存中。通过预加载索引数据,可以提高搜索性能,尤其是在首次查询时。
以下是一些常见文件类型及其作用:
- nvd(Norms file):包含字段规范化数据,通常用于排序和打分。
- tim(Term index file):包含术语索引数据,用于加速查询。
- doc(Document index file):包含文档数据,直接用于查询结果的返回。
- dim(Doc values file):包含字段数据,用于聚合和排序。
- tip(Term dictionary file):包含术语字典,用于加速查询。
创建索引时设置:
PUT /index
{
"settings": {
"index.store.preload": ["nvd", "tim", "doc"]
}
}
索引存在时设置
关闭索引
POST /index/_close添加预加载文件配置
PUT /index/_settings { "index.store.preload": ["tim"] }打开索引
POST /index/_open
关闭索引时如果正在写入数据会被拒绝写入,需要进行处理
示例设置:
以下是几个示例设置,供参考:
设置1:高查询频率索引
PUT /high_frequency_index/_settings
{
"index.store.preload": ["nvd", "tim", "doc", "dim"]
}
设置2:部分字段查询索引
PUT /partial_field_index/_settings
{
"index.store.preload": ["nvd", "tim"]
}
设置3:资源受限环境
PUT /limited_resources_index/_settings
{
"index.store.preload": ["tim"]
}
