zoukankan      html  css  js  c++  java
  • Elasticsearch 调优之 搜索速度优化

    本章讨论搜索速度优化:搜索速度与系统资源、数据索引方式、查询方式等多方面

    1、为文件系统cache预留足够的内存

    1)应用程序一般情况下,读写都会被操作系统“cache”

    2)cache保存在物理内存中,命中cache可以降低对磁盘的读写频率

    3)搜索对系统cache很依赖,如果搜索从磁盘读取数据,则一定会产生相对较高的延迟

    4)应该至少为系统cache预留一般的可用内存,更大内存可以有更高的cache命中率

    5)线上应禁用swap

    2、使用更快的硬件

    1)写入对CPU更敏感、而搜索对IO能力需求更大,使用SSD会比旋转类介质好

    2)尽量避免使用NFS等远程文件系统。如果NFS比本地系统慢3倍,则搜索场景响应速度会慢10倍

    3)如果搜索类型属于计算型,则可以考虑更快的CPU

    3、文档模型

    1)文档应该合理建模,以降低搜索时的成本

    2)避免join操作,嵌套(nested)回使查询慢几倍

    3)父子关系可能使查询慢数百倍

    4)如果可以通过非规范化文档来回答相同的问题,则可以显著的提高搜索速度

    4、预索引数据

    可以针对某些查询的模式来优化数据的索引方式

    1)

    5、字段映射

    某些字段是数值类型,但是并不意味着总是应该被映射为数值类型,例如,

    一些标识符将它们映射为keyword可能会比integer或long更好。

    6、避免使用脚本

    应避免使用脚本

    如果一定要用,则应该优先考虑painless和expressions

    7、优化日期搜索

    8、只为读索引执行force-merge

    1)为不再更新的只读索引执行force merge,将Lucene索引合并为单个分段,可以提升查询速度

    2)如果Lucene索引存在多个分段,每个分段会单独执行搜索再将结果合并,将只读索引

    强制合并为一个Lucene分段,不仅可以

  • 相关阅读:
    k8s资源需求和限制, 以及pod驱逐策略
    python转义引起的错误
    nginx location 匹配目录
    kubelet 证书自动续期
    docker常见退出码
    (转)firefox火狐浏览器语言设置
    去掉表的identity属性
    SQL Server内存方面知识收集
    SQL Server 中not in和not exists
    Data Compression(1)
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11159160.html
Copyright © 2011-2022 走看看