ElasticSearch--优化写入速度的方法--单个索引的操作

原文网址:ElasticSearch--优化写入速度的方法--单个索引的操作_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文介绍如何在单个索引的层面优化写入的方法。

相关网址

ElasticSearch--优化写入速度的方法--修改配置_IT利刃出鞘的博客-CSDN博客

自动生成doc ID(推荐)

        通过ES写入流程可以看出,写入doc时如果外部指定了id,则ES会先尝试读取原来doc的版本号,以判断是否需要更新。这会涉及一次读取磁盘的操作,通过自动生成doc ID可以避免这个环节。

调整字段Mappings(推荐)

  1. 减少字段数量,对于不需要建立索引的字段,不写入ES;
  2. 将不需要建立索引的字段index属性设置为not_analyzed或no。对字段不分词,或者不索引,可以减少很多运算操作,降低CPU占用。尤其是binary类型,默认情况下占用CPU非常高,而这种类型进行分词通常没有什么意义;
  3. 减少字段内容长度,如果原始数据的大段内容无须全部建立索引,则可以尽量减少不必要的内容;
  4. 使用不同的分词器(analyzer),不同的分析器在索引过程中运算复杂度也有较大的差异。

调整_source字段(不推荐)

        _source字段用于存储doc原始数据,对于部分不需要存储的字段,可以通过includes excludes过滤,或者将_source禁用,一般用于索引和数据分离。

        这样可以降低I/O的压力,不过实际场景中大多不会禁用_source,而即使过滤某些字段,对于写入速度的提升作用也不大,满负荷写入情况下,基本是CPU先跑满了,瓶颈在于CPU。

禁用_all字段(推荐)

        从ES 6.0开始,_all字段默认认为不启用,而在此前的版本中,_all字段默认是开启的。_all字段中包含所有字段分词后的关键词,作用是可以在搜索的时候不指定特定字段,从所有字段中检索。

对Analyzed的字段禁用Norms(不推荐)

        Norms用于在搜索时计算doc的评分,如果不需要评分,则可以将其禁用:
"title " : { "type" : "string" , "norms" : { "enabled" : false}}

index_options设置(不推荐)

        index_options用于控制在建立倒排索引过程中,哪些内容会被添加到倒排索引,例如,doc数量、词频、positions、offsets等信息,优化这些设置可以一定程度降低索引过程中的运算任务,节省CPU占用率。

        不过在实际场景中,通常很难确定业务将来会不会用到这些信息,除非一开始方案就明确是这样设计的。

其他网址

Elasticsearch性能优化汇总——写入&搜索 - DeepSleeping丶 - 博客园

猜你喜欢

转载自blog.csdn.net/feiying0canglang/article/details/126577906
今日推荐