ES优化

【Elasticsearch】ES Elasticsearch查询优化 文章目录1.概述1.前言2 合理的集群规划3 数据模型优化3.1 精心设计Mapping3.2 选择合理的分词器4 查询限制5 段合并(segment merge)6 过滤查询(filter)7 路由(routing)8 配置Client角色9 游标查询(scroll)10 避免使用wildcard模糊匹配查询11 聚合优化11.1 默认深度优化聚合改为广度优先聚合11.2 在每一层terms aggregation内部加一个增加:"execution_hint": "map" 1.概述 转载 阅读详情

ElasticSearch生产集群配置优化
集群主机(节点)配置相近
集群中主机最好配置相近,集群的性能符合木桶定律,即集群的查询性能是由集群中性能最差的主机决定的。
建议使用SSD硬盘替换传统的机械硬盘
ES对IO的性能要求比较高。
ES内存配置不要超过32G
指定的堆内存可以是节点总内存的一半。
https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html#compressed_oops
ES_HEAP_SIZE
集群名称和节点名称必须要配置
ES根据集群的名称组成一个集群,在生产中可以指定一个具有实际意义的集群名称。
节点名称一般指定主机名,便于管理和监控,出现故障也易于定位。
使用独占的主节点和数据节点。(主要避免脑裂或负载过高)
1:什么是脑裂?
一个集群里面出现了两个或以上的master节点,就称为脑裂。
2:产生原因?
发生脑裂的原因主要由两个:网络质量不好或master节点负载过高。
3:如何避免脑裂?
1). 因此,在前面的优化中,使用独占的主节点和数据节点可以避免负载过高。
2). 缓解脑裂还可以设置一个参数: discovery.zen.minimum_master_node。
这个参数决定了至少有多少个存活的节点,才选举产生新的master节点。
discovery.zen.minimum_master_node: (master_eligible_nodes / 2) + 1
换句话说,如果有三个主节点,那么最小主节点应该设置为(3/2)+ 1或2
discovery.zen.minimum_master_nodes:2
3). 如果集群网络环境不太好, 建议将网络故障的超时时间设置的长一点。
为了保证网络,可以将es和hadoop或spark存在于同一个机架。
discovery.zen.ping_timeout(默认3秒)
4). 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网 络环境可以以高点的值来防止自动发现时出错。
减少swap内存交换
bootstrap.memory_lock: true
副本、分片数量的规划
分片的数量(建议3~4个)需要根据实际数据量测试,确定最合适的分片数量。
分片数过少,并发少。分片数过多,消耗的系统资源多(打开文件句柄、内存),影响性能。
一个分片最多能存储20亿条记录,根据实际性能规划。
副本一般推荐设置2~3个(大量数据情况)。
副本数量能提升数据检索的性能。
副本需要从主分片同步数据,为了避免服务器压力,副本数量不能过多。
集群启动数据恢复相关参数配置
集群维护后重启。比如一共5个节点,其中3个节点启动很快,2个节点启动很慢。
当3个节点启动后,另外两个节点还没启动,这个时候集群找不到没启动服务的节点上的shard,这个时候集群就会尝试做分片的重新分配。等另外两个节点启动后,集群再次对集群的分片重新分配。这样就导致了不必要的IO操作,对性能影响非常大。
gateway.recover_after_nodes: 3 当集群中至少启动3个节点,才开始做分片的分配。
gateway.recover_after_nodes
设置集群中N个节点启动时进行数据恢复,默认为1。
gateway.recover_after_time
设置初始化数据恢复进程的超时时间,默认是5分钟。
gateway.expected_nodes
设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。
数据导入优化
两种方式提升性能。
(1)、在数据导入前,将副本数设置为0。
数据导入完成后,将副本数设置为正常数值。
在数据导入,如果存在副本,需要从主分片同步数据,增加ES服务器的压力。
(2)、设置index.refresh_interval参数
index.refresh_interval默认是1秒,刷新后文档就能被检索到。
可以将index.refresh_interval设置为1,不刷新。
或者将index.refresh_interval增大,比如30秒,避免频繁刷新。
关闭不必要的index
open的索引的shard会加载到内存中,close不必要的index可以减少内存占用。
curl -XPOST http://node01:1 9200/myshard/_close
事务刷新阈值
Elasticsearch在写入时是先写日志,即事务日志。事务日志在满足一定的阈值大小就会进行延迟提交,可以确保插入和删除操作的原子性。
可以将事务日志的刷新阈值提高,index.translog.flush_threshold_size默认是512M,比如设置成1g:index.translog.flush_threshold_size=1GB

索引缓存大小
增加索引缓存,可以在内存中缓存更多的数据。
indices.memory.index_buffer_size 默认是10%,即为堆内存的10%。一般不需要设置,如果需要设置,一定要进行性能测试。
Spark整合Elasticsearch优化
读取性能
增加shard数量是否可以增加读取性能?
增加节点, 数据更好的跨越多个节点, 理想情况下数据跨越多个节点。
如果一个index的多个shard在同一个机器上,即仅仅是数据虚拟分区,硬件保持不变。虽然可以增加客户端读取的并行度,因为更多的shard意味着更多的任务可以同时从elasticsearch读取数据,但是从elasticsearch角度,没有实际效益,因此性能可能保持不变。
写性能
写入Elasticsearch是由spark的分区数量驱动。elasticsearch-hadoop检测要写入主分片的数量,并在这些shard之间分配写入。因此,可用的shard越多,写入Elasticsearch的并行度越高。
Spark跨越所有的task并行写数据。提升写性能的一个关键方面是Elasticsearch能无压力摄入数据的最大速率。这取决于很多因素(数据大小、硬件、当前负载等),因此Elasticsearch集群自身的优化也非常重要。
减小bulk的大小
假设有T个任务,配置为B字节和N个文档(其中d是平均文档大小),则在给定时间点批量写入请求的最大数量可以是T * B个字节或 T * N个文档(T * N * d以字节为单位)。
对于具有5个任务的工作,使用默认值(1mb或1000文档)意味着最多5mb /5000文档批量大小(散布在shard中)。如果处理时间超过1-2秒,则无需减少bulk的大小。Spark允许为每个任务配置批量写入Elasticsearch的条目数量和大小。
如果有Kafka参与,可以配置Kafka限速参数等。
限制写入Elasticsearch的任务数
使用Spark写数据到Elasticsearch,如果是RDD或者表的join会生成多个任务,这可能导致产生大量的Task, 即导致用户计划用于Elasticsearch的任务数与实际的任务数之间的数量不成比例,有时可能高出1-2个数量级。
如果ES的集群只有几个节点,同时处理这么多的task将导致写数据过程非常缓慢。
解决:减少Task数量,减小源端的小文件,使用coalesce或者repartition参数等。

基于共识的捆绑算法CBBA在多无人机多任务调度中的实现 在捆绑过程中,每个无人机根据自己的任务清单和其他无人机的任务清单,确定一个被称为“束”的集合。通过合理的任务分配和无人机协作,CBBA算法能够实现最优的任务调度,提高了多无人机系统的效率和执行能力。在每一轮迭代中,无人机根据自己的当前任务和位置信息将任务清单发送给其他无人机,并接收其他无人机发送过来的任务清单。通过比较其他无人机的任务清单和自身的任务清单,每个无人机可以更新自己的任务分配情况。在这一步中,每个无人机根据自己选择的新任务,更新自身的任务清单,并将更新后的清单发送给其他无人机。 阅读详情

相关推荐

嵌入式学习的书单推荐

以上是一些优秀的嵌入式学习书单推荐。选择适合自己的学习材料对于学习嵌入式系统非常重要。每一本书籍都有其独特的优势和特点,读者可以根据自己的学习目标和兴趣选择合适的书籍。同时,我们也要注意不断实践和探索,结合实际项目和项目经验,不断提升自己的嵌入式技术水平。希望本文的推荐能够帮助大家在嵌入式学习的道路上取得更好的成果。

新程序圆 1979

ES性能优化:全网最全的一篇

更多的字段对搜索也是有影响的,ES 非常依赖于底层的文件系统缓存,我们肯定想把更多的数据(index segment)缓存起来,这样可以提升性能。的方式来进行处理的。使用 Bulk 的方式有利于提高写入的性能,这个其实也很好理解,如果链接不是长链接,每写入一条数据都进行一次 TCP 链接的过程,那效率是多低啊。对于写入的耗时还是很明显的,从一开始每个批次 3200 条数据的耗时 4 分 39 秒,一路优化到最后的 3 分 53 秒,需要注意的是,部分配置是有特定的使用场景的。

一只小星星 4459

Elsevier投稿别再踩坑了!手把手教你搞定LaTeX模板和所有附件(附避坑清单)

本文详细解析Elsevier投稿全流程中的关键环节,特别是LaTeX模板的使用和系统提交的常见问题。从必备文件准备到LaTeX模板适配,再到投稿系统操作指南,提供全面的避坑清单和实用技巧,帮助科研工作者高效完成投稿,避免因格式错误或文件遗漏导致的退稿风险。

weixin_30915275的博客 551

es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33869377的博客 976

2024东南大学533复试C++程序设计笔试真题精讲

【东南553复试C++】2024东南大学533复试C++程序设计笔试真题精讲

转遍世界 3414

PMSM无感foc控制(滑模-反正切-PLL)【仿真模型搭建教程】(附模型)

本文主要目的是教大家如何把文献中的公式转换成仿真模型。 首先介绍滑模控制的原理及如何搭建simulink模型。 1.1基于反电势估计位置原理 永磁同步电机在静止坐标系αβ下的电压方程: 扩展反电动势包含转子位置信息,并且αβ轴下扩展反电动势的反正切函数正好就等于位置角theta。 1.2 滑模控制原理(比较重要的点是以电机电流模型推导展开) 通过滑模观测得到鲁棒性比较高的αβ轴下扩展反电动势,并求其反正切函数,得到位置信息。 /*********************...

weixin_44769876的博客 1万+

ES索引优化方案

es索引优化

weixin_36382661的博客 3978

RGB接口电容触摸屏驱动(一)模块介绍

RGB接口电容触摸屏驱动(一)模块介绍

杰克拉力船长个人博客 7874

搜索引擎ES

搜索引擎ES1、elasticsearch架构2、es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?es 写数据过程es 读数据过程es 搜索数据过程写数据底层原理 内容参考:https://www.jianshu.com/nb/32673916 1、elasticsearch架构 简而言之的概念: 其实elasticsearch就相当于一个数据库服务 index ——>...

weixin_38219412的博客 1950

C#调用企业微信JS-Sdk实现扫描二维码

企业微信JS-SDK是企业微信面向网页开发者提供的基于企业微信内的网页开发工具包。通过使用企业微信JS-SDK,网页开发者可借助企业微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用企业微信分享、扫一扫等企业微信特有的能力,为企业微信用户提供更优质的网页体验提示:生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是H5应用调用企业微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。

清浅 937

【QT开发教程】使用Qt进行NFC编程

近场通信(NFC,Near Field Communication)技术广泛应用于现代设备中,例如智能手机、支付终端和门禁系统。Qt提供了一套完整的NFC模块,使开发者可以轻松地在应用程序中实现NFC功能。本文将介绍如何在Qt中进行NFC编程,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 1468

ES性能优化和注意事项

当然,最好同时考虑原则 2。考虑一下 node 数量,一般一个节点有时候就是一台物理机,如果分片数过多,大大超过了节点数,很可能会导致一个节点上存在多个分片,一旦该节点故障,即使保持了 1 个以上的副本,同样有可能会导致数据丢失,集群无法恢复。此外,Elasticsearch 作为搜索引擎时,主要承载 query 的匹配和排序的功能,那数据的存储类型基于这两种功能的用途分为两类,一是需要匹配的字段,用来建立倒排索引对 query 匹配用,另一类字段是用做粗排用到的特征字段,如 ctr、点击数、评论数等等。

ALONG的博客 2142

RSA算法详解:万字文章详解RSA的加密与解密

为了彻彻底底的研究明白RSA算法,真的是。。煞(lei)费(si)苦(wo)心(le),首先我希望自己前前后后、彻彻底底的琢磨明白,其次我也希望我把他分享出来以后,大家都能读得懂,这篇文章真的是我迄今为止写的又臭又长的一篇文章了,但是我能保证的是,你读完了以后,绝对不会再问RSA是啥玩意儿了。。

布啦啦 7668

搜索引擎优化:使用Elasticsearch进行搜索引擎优化

1.背景介绍 1. 背景介绍 搜索引擎优化(SEO)是指在搜索引擎中获得更高的排名,从而提高网站的可见性和流量。随着互联网的发展,搜索引擎优化变得越来越重要。Elasticsearch是一个开源的搜索引擎,它可以帮助我们实现高效的搜索和分析。在本文中,我们将讨论如何使用Elasticsearch进行搜索引擎优化。 2. 核心概念与联系 2.1 Elasticsearch Elastics...

AI天才研究院 503

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Elasticsearch的搜索引擎优化与SEO

1.背景介绍 Elasticsearch是一个分布式、实时的搜索引擎,它可以处理大量数据并提供快速、准确的搜索结果。在现代网站和应用程序中,搜索功能是非常重要的,因为它可以帮助用户快速找到所需的信息。因此,优化Elasticsearch的搜索引擎性能和SEO(搜索引擎优化)是非常重要的。 在本文中,我们将讨论Elasticsearch的搜索引擎优化与SEO,包括背景介绍、核心概念与联系、核心算...

AI天才研究院 1242

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

日志分析场景:从改进优化到全面替代开源ES(elasticsearch)

关于搜索结果 Merge 优化,简单来说,ES 搜索结果的 Merge,由 Cordinating node 合并,本次搜索命中的 Shard 返回结果执行一次合并,这样可能造成单 Merge 节点 CPU 消耗过大,或者集群过大时内存消耗极大,出现 OOM。ES 中,fdx、tvx、fnm、si、tip等文件是常驻内存的,虽然搜索时不用加载这些文件,但实际场景中,ES 加载的大量文件会导致打开索引很慢,因为加载了太多的东西占用了相当大的内存。ES 是一个通用的搜索引擎,而日志处理是有特殊的日志需求的。

rizhiyi_logease的博客 1230

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

亿级 ElasticSearch 优化实践

亿级 ElasticSearch 优化实践

安静的软件工程师 1127

ElasticSearch三:ES如何优化查询的性能

es在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 问这个问题,是肯定的,说白了,就是看你有没有实际干过es,因为啥?es说白了其实性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下5秒~10秒,坑爹了。第一次搜索的时候,是5~10秒,后面反而就快了,可能就几百毫秒。(LRU) 你就很懵,每个用户第一次访问都会比较...

qq_41864967的博客 1万+

Elasticsearch07——ES优化

一、硬件选择  Elasticsearch 的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中的,具体的路径可在 ES 的配置文件…/config/elasticsearch.yml 中配置,配置项如下: #----------------------------------- Paths------------------------------------# # Path to directory where to store the data (separate multiple loc

如不來的博客 978

ElasticSearch优化实战:打造高性能搜索引擎的秘籍

本文深入探讨了ElasticSearch(ES)的优化策略,旨在帮助读者提升搜索引擎的性能和效率。文章首先介绍了ES的数据写入和搜索的流程。随后,通过具体用例分析,展现了在不同业务场景下的优化实践,如新闻内容检索、客户服务记录检索和物流信息追踪平台。这些用例揭示了索引分片调整、热点数据处理、异步写入、内容分级索引等多种优化手段的实际效果。文章强调优化ES是一个持续的过程,需要不断地监控、调整和优化以应对数据增长和业务需求的变化。

东境物语 2万+

记一次ES搜索引擎对响应结果排序优化

记一次ES搜索引擎对响应结果排序优化 author: codezhao 1.需求:根据关键词分页搜索小说名称,排序优先响应和关键字前缀相同的小说名称 如果我们按照ES默认的相关度分数排序,写法如下: //条件 BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); queryBuilder.must(QueryBuilders.termsQuery("status", "1")); QueryBuilders.wildcardQuery("boo

zhao19191919的博客 1342

在淘客返利系统中使用Elasticsearch实现搜索引擎优化

本文将探讨如何在淘客返利系统中使用Elasticsearch来实现搜索引擎优化,提升搜索速度和准确性,满足高并发、大数据量的搜索需求。Elasticsearch是一个开源的分布式搜索引擎,基于Lucene构建,提供了强大的全文搜索和分析能力。本文深入探讨了如何在淘客返利系统中使用Elasticsearch实现搜索引擎优化,通过集成Elasticsearch,可以提升系统的搜索性能、查询效率和用户体验,满足复杂业务场景下的需求。大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!

技术研究中心 2692

Elasticsearch专栏-8.es读写性能及优化

es读写性能及优化

zjun1001的博客 7802

Elasticsearch搜索引擎优化技巧

而对于不需要进行分词的字段,如ID或标签等,可以使用。例如,对于文本类型的字段,我们可以使用。类型,并在需要进行全文检索时使用。

2501_91460574的博客 259

Elasticsearch教程(33) ES优化总结

这里暂不考虑ES的集群优化,一般在公司里有专门的运维去维护和优化ES集群,而且每个客户现场的硬件条件各不相同,不好强求客户去升级他的硬件。 这里只是从开发和设计人员的角度去看如何尽量提高ES的性能,避免掉进常见的坑。 优化设计 ● 要理解mapping的字段属性,知道如何选择text还是keyword还是int,枚举字段用keyword ● 不要对text类型排序聚合,不要设置fielddata=true,应使用复合字段,ES6后指定预排序 ● 知道字段是否要索引,index属性,例如备注remark ●

Java Spring Elasticsearch 644

ElasticSearch索引优化:让你的搜索引擎比相亲对象更懂你

数据建模比调参重要→ 追姑娘要先了解喜好监控比直觉可靠→ 女朋友生气要看脸色而不是猜压测比祈祷有用→ 婚前试同居比算八字实在分片设计按需来,映射类型不能歪JVM内存32G顶,查询多用filter写入批量别单条,冷热分离是真爱作者:一个用头发换经验的ES调优侠声明:本文原理若有不准确,欢迎带刀来战互动话题:你的ES曾经因为什么奇葩原因崩过?说出来让大家开心一下!

平凡君 909
上一篇: Logstash安装
下一篇: ZooKeeper
murphyZ
博客等级 码龄8年 6粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值