-
通过定义keyword 的
"null_value" :"NULL"
,使得搜索是不用单独使用exists查询。统一用terms查询就能查询到想要的结果 -
利用constantScore和filter查询,跳过算分的步骤,提高性能
-
设置
"index" :false
对于不用作为查询条件的字段,增加写的性能 -
设置
"enable":false
,对于不需要检索,排序和聚合的字段 -
设置
"norms":false
,对于不需要算分的字段 -
设置
"doc_values" :false
对于不用排序和聚合的字段,增加写的性能 -
设置聚合的keyword字段,
"eager_global_ordinals": true
,能够将写入的文档添加到缓存中,增加聚合搜索的性能 -
为索引增加"_meta"信息,用于识别mapping 的版本,便于管理mapping
-
查看分片的大小信息,如果每个分片大于20GB,需要扩充主分片数量
-
单个节点数据控制在2TB以内,最大不超过5TB
-
每个节点每GB堆内存,建议最多20个分片,每个分片控制数据在20-40GB内
-
8GB内存,数据量控制在
8*20GB*30G = 4.8TB
-
根据分片确定节点内存大小:给每个字段预留1kb堆空间
分片数 * 所有字段数 * 1kb + 0.5GB(开销空间:索引、搜索、聚合)= 最终单节点ES堆空间大小
-
-
对于搜索类的项目,内存和存储数据比例1:16
-
有复杂的查询和聚合,建议设置coordinating节点
-
为避免分片分布不均的问题,要提前监控磁盘空间,提前清理数据或增加节点(70%)
-
使用es自动生成文档的ID,提高refresh interval的时间,默认为1s
-
控制分词的级别,使用index_options控制。docs、freqs、positions、offsets
elastic优化
发布时间 2024-01-06 16:37:03作者: 赛博朋克V