es查询大文本效率_【搜索引擎】 4-ES在大数据量下提高查询效率方案

本文介绍了如何在大数据量下提高Elasticsearch(ES)的查询效率,包括预留足够的系统内存以提升内存查询,减少索引字段以降低内存占用,数据预热提高热门数据访问速度,冷热分离存储策略,以及文档设计中避免关联查询和分页性能优化。通过这些方法,可以有效提升ES在大数据场景下的查询性能。
摘要由CSDN通过智能技术生成

在一些公司里,很多数据都喜欢丢到 ES 里,甚至有的人把其充当数据库的使用,这样是很危险的。很可能过个半年一年ES数据量就很大了,然后当时的申请的ES机器配置不高,查询速度变慢。所以,一开始架构评审应该做好,预计几年内数据量的规模,从而选择什么样配置的ES集群。下面说几个比较重要的优化方面。

一、给机器预留足够的系统内存

前面我们已经讲过,es查询数据先从内存(即 os cache)中查询,查不到再去磁盘(segment file) 中查询。

从内存中查询基本都是几十毫秒到几百毫秒,从磁盘查询可能要好几秒。

为了保证 ES 能尽量从内存中查询,我们需要确保系统有足够的剩余内存可以使用。

比如一台ES的节点机器有 64GB 内存,我们可以给ES进程分配32GB(即JVM参数设置最大堆32GB),然后留32GB作为 os cache 的内存。然后我们尽量确保这台ES节点上的索引数据不要超过剩余可用内存(即32GB), 这样就能最大程度保证尽量走内存查询而非磁盘查询。

二、ES只存必要的字段

因为我们的内存容量有限,所以尽量不要把所有的数据写在内存里,因此每个索引的字段也不要太多。

比如商品信息的索引,我们可以只存ID、标题、类别、品牌、价格等用于搜索的必要字段。然后其他字段可以存储在MySQL或HBase等关系型数据库中,推荐使用 ES + HBase。

也就是说,用户根据标题搜素标题,查到5个,然后用这个5个的id去MySQL/HBase数据库查询,因为id一般有索引查询会比较快。

三、数据预热,定时主动搜索

对于那些比较热门或者访问量高的数据,可以做一个专门的缓存预

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值