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


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

    简介

    说明

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

    相关网址

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

     粉丝福利:有很多粉丝私信问我有没有Java的面试及PDF书籍等资料,我整理一下,包含:真实面试题汇总、简历模板、PDF书籍、PPT模板等。这些是我自己也在用的资料,面试题是面试官问到我的问题的整理,其他资料也是我自用的,真正实用、靠谱。资料可以从这里免费获取:资料地址

    自动生成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占用率。

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

  • 相关阅读:
    buuctf crypto 【[GUET-CTF2019]BabyRSA】解题记录
    AlexNet、VGG、GoogLeNet、ReaNet、MobileNet、ShuffleNet和EfficientNet网络的亮点和创新之处
    CPU体系(2):ARM Store Buffer
    【Python爬虫】初识爬虫及requests模块入门
    P物质肽[DArg1, DTrp5, 7, 9, Leu11]
    Hudi第一章:编译安装
    深度学习-全卷积神经网络(FCN)
    【2022秋线上作业-第5次-第11-13周】选择题
    LeetCode 300. 最长递增子序列
    注解学习总结
  • 原文地址:https://blog.csdn.net/feiying0canglang/article/details/126577906