Elasticsearch 性能调优指南——推荐实战 DSL

简介: 本文是在以下 6 篇基础上的继续扩展版本,不求大而全,只求对实战有帮助。1、干货 | Elasticsearch 运维实战常用命令清单2、干货 | Elasticsearch Top10 监控指标3、你不得不关注的 Elasticsearch Top X 关键指标4、干货 | Elasticsearch 开发实战常用命令清单5、干货 | Elasticsearch开发人员最佳实战指南6、Elasitcsearch 开发运维常用命令集锦

1、未分配分片查看

GET _cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state:asc

2、动态调整副本数

PUT my-index-2021.05.30-000002/_settings

{"number_of_replicas": 0}

ps:主分片不可以修改(除非shrink),但:副本可以动态调整大小。


3、重新打开分片分配策略

PUT /_cluster/settings

{

 "transient": {

   "cluster.routing.allocation.enable": "all"

 }

}

4、手动移动未分配的分片

POST /_cluster/reroute

{

 "commands": [

   {

     "move": {

       "index": "test",

       "shard": 0,

       "from_node": "node1",

       "to_node": "node2"

     }

   },

   {

     "allocate_replica": {

       "index": "test",

       "shard": 1,

       "node": "node3"

     }

   }

 ]

}

5、查看磁盘使用率

GET /_cat/allocation?v

使用率大于等于85%,知道已经达到警戒水位线了,要预警。


6、查看各个节点的版本号

GET /_cat/nodes?v&h=host,name,version

集群多节点版本不一致,可能会引发各种未知异常。


7、检索性能调优实战

7.1 慢日志设置

PUT /my-index-000001/_settings

{

 "index.search.slowlog.threshold.query.warn": "10s",

 "index.search.slowlog.threshold.query.info": "5s",

 "index.search.slowlog.threshold.query.debug": "2s",

 "index.search.slowlog.threshold.query.trace": "500ms",

 "index.search.slowlog.threshold.fetch.warn": "1s",

 "index.search.slowlog.threshold.fetch.info": "800ms",

 "index.search.slowlog.threshold.fetch.debug": "500ms",

 "index.search.slowlog.threshold.fetch.trace": "200ms",

 "index.search.slowlog.level": "info"

}

7.2 构建Mapping 设置路由

PUT my-index-000002

{

 "mappings": {

   "_routing": {

     "required": true

   }

 }

}

7.3 段合并

POST /my-index-000001/_forcemerge

8、写入优化篇

8.1 批量写入

POST _bulk

{ "index" : { "_index" : "test", "_id" : "1" } }

{ "field1" : "value1" }

{ "delete" : { "_index" : "test", "_id" : "2" } }

{ "create" : { "_index" : "test", "_id" : "3" } }

{ "field1" : "value3" }

{ "update" : {"_id" : "1", "_index" : "test"} }

{ "doc" : {"field2" : "value2"} }

8.2 增加刷新频率

PUT /my-index-000001/_settings

{

 "index" : {

   "refresh_interval" : "30s"

 }

}

8.3 副本设置为0,提升写入

PUT my-index-000001/_settings

{

 "number_of_replicas": 0

}

8.4 translog 异步刷盘

PUT my-index-2021.06.03/_settings

{

 "index": {

   "translog": {

     "durability": "async"

   }

 }

}

9、堆内存调优实战

在 jvm.option 配置文件中(不支持动态调整,需要重启后生效)


ES_HEAP_SIZE=DESIRED_SIZE (e.g. "3g")

10、磁盘不足解决方案

磁盘的三个警戒水位线需要再一次强调。如果 Elasticsearch 集群节点的磁盘空间不足,则会影响集群性能。


一旦可用存储空间低于特定阈值限制,它将开始阻止写入操作,进而影响数据进入集群。那么,如何扩展呢?


三个警戒水位线推荐阅读:你不得不关注的 Elasticsearch Top X 关键指标。


第一:横向扩展,添加数据节点(前提分片分配相对合理)。


第二:纵向扩展,升级机器,加磁盘(可能需要调整data.path)。


第三:迁移数据,历史久远不用数据可以考虑迁移到别的集群,或者归档到别的机器。


小结

性能调优非一朝一夕之功,推荐阅读官方文档的:“How to ” 部分。该部分针对写入、检索等性能优化,更加细致、全面有针对性。

image.png

本文是从命令行排查问题角度出发做的小结,希望对大家排查线上问题有所帮助。关于性能优化,结合如下几篇实战文章,能进一步提升认知。


Elasticsearch性能优化实战指南


让Elasticsearch飞起来!——性能优化实践干货


Elasticsearch大文件检索性能提升20倍实践(干货)


Elasticsearch 聚合性能优化六大猛招


Elasticsearch 高基数聚合性能提升3倍,改动了什么?


参考

elasticsearch_monitoring_cheatsheet.pdf


https://www.elastic.co/guide/en/elasticsearch/reference/7.14/modules-cluster.html#disk-based-shard-allocation


https://www.elastic.co/guide/en/elasticsearch/reference/7.14/how-to.html

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
5月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
991 6
|
缓存 固态存储 Java
Elasticsearch 的扩展性和性能调优
【9月更文第2天】Elasticsearch 是一个分布式的搜索和分析引擎,适用于各种大规模数据处理场景。随着数据量的增长和查询复杂度的增加,Elasticsearch 的性能优化变得尤为重要。本文将详细介绍如何通过硬件配置、集群规模调整以及查询优化策略来提升 Elasticsearch 的性能。
711 6
|
12月前
|
数据采集 JSON 数据挖掘
Elasticsearch 的DSL查询,聚合查询与多维度数据统计
Elasticsearch的DSL查询与聚合查询提供了强大的数据检索和统计分析能力。通过合理构建DSL查询,用户可以高效地搜索数据,并使用聚合查询对数据进行多维度统计分析。在实际应用中,灵活运用这些工具不仅能提高查询效率,还能为数据分析提供深入洞察。理解并掌握这些技术,将显著提升在大数据场景中的分析和处理能力。
616 20
|
11月前
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
2775 1
|
存储 缓存 监控
极致 ElasticSearch 调优,让你的ES 狂飙100倍!
尼恩分享了一篇关于提升Elasticsearch集群的整体性能和稳定性措施的文章。他从硬件、系统、JVM、集群、索引和查询等多个层面对ES的性能优化进行分析,帮助读者提升技术水平。
|
存储 缓存 监控
深入解析:Elasticsearch集群性能调优策略与最佳实践
【10月更文挑战第8天】Elasticsearch 是一个分布式的、基于 RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量数据。随着企业对实时数据处理需求的增长,Elasticsearch 被广泛应用于日志分析、全文搜索、安全信息和事件管理(SIEM)等领域。然而,为了确保 Elasticsearch 集群能够高效运行并满足业务需求,需要进行一系列的性能调优工作。
914 3
|
JSON 自然语言处理 算法
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
DSL查询文档、RestClient查询文档、全文检索查询、精准查询、复合查询、地理坐标查询、分页、排序、高亮、黑马旅游案例
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
|
存储 数据采集 数据处理
数据处理神器Elasticsearch_Pipeline:原理、配置与实战指南
数据处理神器Elasticsearch_Pipeline:原理、配置与实战指南
764 12
|
存储 数据库 索引
面试题ES问题之动态映射的定义如何解决
面试题ES问题之动态映射的定义如何解决
187 1

热门文章

最新文章