1:配置合适的分词器

Elasticsearch 内置了很多分词器,包括 standard、cjk、nGram 等,也可以安装自研/开源分词器。根据业务场景选择合适的分词器,避免全部采用默认 standard 分词器。
常用分词器:
        standard:默认分词,英文按空格切分,中文按照单个汉字切分。
        cjk:根据二元索引对中日韩文分词,可以保证查全率。
        nGram:可以将英文按照字母切分,结合ES的短语搜索(match_phrase)使用。
        IK:比较热门的中文分词,能按照中文语义切分,可以自定义词典。
        pinyin:可以让用户输入拼音,就能查找到相关的关键词。
        aliws:阿里巴巴自研分词,支持多种模型和分词算法,词库丰富,分词结果准确,适用于电商等对查准要求高的场景。

2:设置查询读取记录条数和字段

默认的查询请求通常返回排序后的前 10 条记录,最多一次读取 10000 条记录,通过 from 和 size 参数控制读取记录范围,避免一次读取过多的记录。通过 _source 参数可以控制返回字段信息,尽量避免读取大字段。 

3:设置 teminate_after 查询快速返回

如果不需要精确统计查询命中记录条数,可以配 teminate_after 指定每个 shard 最多匹配 N 条记录后返回,设置查询超时时间 timeout。在查询结果中可以通过 “terminated_early” 字段标识是否提前结束查询请求。 

4: 避免前缀模糊匹配

Elasticsearch 默认支持通过 *? 正则表达式来做模糊匹配,如果在一个数据量较大规模的索引上执行模糊匹配,尤其是前缀模糊匹配,通常耗时会比较长,甚至可能导致内存溢出。尽量避免在高并发查询请求的生产环境执行这类操作。
        某客户需要对车牌号进行模糊查询,通过查询请求 "车牌号:*A8848*" 查询时,往往导致整个集群负载较高。通过对数据预处理,增加冗余字段 "车牌号.keyword",并事先将所有车牌号按照1元、2元、3元...7元分词后存储至该字段,字段存储内容示例:沪,A,8,4,沪A,A8,88,84,48,沪A8...沪A88488。通过查询"车牌号.keyword:A8848"即可解决原来的性能问题。

5:避免索引稀疏

Elasticsearch6.X 之前的版本默认允许在一个 index 下面创建多个 type,Elasticsearch6.X 版本只允许创建一个 type,Elasticsearch7.X 版本只允许 type 值为 “_doc”。在一个索引下面创建多个字段不一样的 type,或者将几百个字段不一样的索引合并到一个索引中,会导致索引稀疏问题。
        建议每个索引下只创建一个 type,字段不一样的数据分别独立创建 index,不要合并成一个大索引。每个查询请求根据需要去读取相应的索引,避免查询大索引扫描全部记录,加快查询速度。

6: 扩容集群节点个数,升级节点规格

通常服务器节点数越多,服务器硬件配置规格越高,Elasticsearch 集群的处理能力越强。
在不同节点规模下的查询性能测试(测试环境:Elasticsearch5.5.3 集群,单节点16核CPU、64G内存、2T SSD盘,10亿条人口户籍登记信息,数据大小1TB, 20索引分片)。

不同集群节点规模写入性能测试(测试环境:Elasticsearch6.3.2 集群,单节点16核CPU、64G内存、2T SSD盘,10亿条人口户籍登记信息,单条记录1KB,数据集大小1TB,20个并发写入线程)。 

Elasticsearch-查询性能调优相关推荐

  1. 【Elasticsearch】索引和查询性能调优的21条建议-以及调优参数

    文章目录 1.概述 1.Elasticsearch部署建议 1.1. 选择合理的硬件配置:尽可能使用 SSD 1.2. 给JVM配置机器一半的内存,但是不建议超过32G 1.3. 规模较大的集群配置专 ...

  2. Elasticsearch索引和查询性能调优的21条建议【下】

    Elasticsearch是一款流行的分布式开源搜索和数据分析引擎,具备高性能.易扩展.容错性强等特点.它强化了Apache Lucene的搜索能力,把掌控海量数据索引和查询的方式提升到一个新的层次. ...

  3. SQL Server 执行计划(8) - 使用 SQL 执行计划进行查询性能调优

    在本系列的前几篇文章(见底部索引)中,我们介绍了SQL 执行计划的多个方面,我们讨论了执行计划是如何在内部生成的,不同类型的计划,主要组件和运算符以及如何阅读和分析使用不同工具生成的计划.在本文中,我 ...

  4. sql查询非11位非数字_非生产环境SQL查询性能调优技巧

    sql查询非11位非数字 It is a common misconception that you need real production data, or production like dat ...

  5. Mysq查询性能调优

    当一条SQL执行较慢,需要分析性能瓶颈,到底慢在哪? 我们一般会使用Explain查看其执行计划,从执行计划中得知这条SQL有没有使用索引?使用了哪个索引? 但是执行计划显示内容不够详细,如果显示用到 ...

  6. elasticsearch原理_ElasticSearch读写底层原理及性能调优

    ES写入/查询底层原理 1. Elasticsearch写入数据流程 客户端随机选择一个ES集群中的节点,发送POST/PUT请求,被选择的节点为协调节点(coordinating node) 协调节 ...

  7. eBay的Elasticsearch性能调优实践

    https://www.sohu.com/a/220443841_467759 Elasticsearch 是一个基于 Apache Lucene 的开源搜索和分析引擎,允许用户近实时地存储.搜索和分 ...

  8. elasticsearch原理_花几分钟看一下Elasticsearch原理解析与性能调优

    基本概念 定义 一个分布式的实时文档存储,每个字段 可以被索引与搜索 一个分布式实时分析搜索引擎 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据 用途 全文检索 结构化搜索 分 ...

  9. 【Elasticsearch】eBay上的Elasticsearch性能调优实践

    1.概述 翻译:eBay上的Elasticsearch性能调优实践 中文版:eBay上的Elasticsearch性能调优实践 Elasticsearch 是一个基于 Apache Lucene 的开 ...

  10. 【Elasticsearch】Elasticsearch性能调优

    1.概述 转载:Elasticsearch性能调优 因为总是看到很多同学在说elasticsearch性能不够好,集群不够稳定,询问关于elasticsearch的调优,但是每次都是一个个点的单独讲, ...

最新文章

  1. MySQL——MySQL的数据查询功能
  2. 【项目管理】工具--数据收集
  3. redis 队列_Redis系列5实现简单消息队列
  4. 图解ArcGIS API for JavaScript开发环境搭建
  5. [渝粤教育] 西北大学 数据结构 参考 资料
  6. 复盘二进制的习题(1)
  7. 从WINDOWS切换到LINUX后,JDBC MYSQL 中文存储变为问号问题
  8. python实现移除某文件夹下所有文件
  9. Ubuntu登陆后桌面图标消失,只有背景和鼠标存在
  10. 2017年3月14日-----------乱码新手自学.net 之Authorize特性与Forms身份验证(登陆验证、授权小实例)...
  11. IPFS创始人Juan Benet讲解FileCoin各大应用
  12. 甘肃300件文物现古丝路交通 穿越古今展视听新体验
  13. Native xdp hook 点
  14. 【微软资源站】MSDN
  15. 化妆品不合肤质惹来老年斑
  16. 海康威视2017校园秋季招聘技术支持工程师面试经验
  17. Python暴力破解wifi密码,你看了你也行
  18. Glade的简单使用说明+例子(一)
  19. html写桌面宠物,写个桌面宠物
  20. 深度限流装置是什么_密山FLS型极速零损耗深度限流装置提供商,母线残压保持...

热门文章

  1. c语言如何编一个警报声音,电脑如何自定义警报的声音具体该如何操作
  2. 服务器打补丁重启时候系统掉,服务器自动重启我的服务器windowssever高级版,但每次开 爱问知识人...
  3. 数据的逻辑结构包括那些?
  4. word打不开html,word打不开怎么办?word文档打不开怎么办?
  5. liunx中文件夹不能删除怎么操作
  6. isSelected() 的使用
  7. 【干货】消费金融助贷业务实操全速览
  8. 亲完如何进行下一步_接吻进阶指南,提出接吻,亲吻技巧,约会后怎么接吻
  9. go “静态目录服务” http.FileServer
  10. linux系统下使用gcc编译C++程序出现XXX未定义的引用的处理