首页 百度SEO内容详情

如何提高elasticsearch的查询速度

2024-05-28 24 网站首席编辑

如何提高elastiCSearch的查询速度

参与过搜索、数据分析等项目的开发者对于ElasticSearch较为熟悉,虽说ES目前应用广泛,但其实它的性能并非我们想像的那么好。

ElasticSearch的定位是什么?

ElasticSearch(简称ES)是用Java编程语言开发的基于Lucene的一款企业级搜索引擎服务器。它支持分布式部署,而且对外提供了RESTful API,便于各类编程语言调用。

如何提高elasticsearch的查询速度

ES性能并非想像中的那么好

ES数据量一大时,特别是第一次搜索的时候耗时会很久(甚至10s以上)。也不要认为改个参数就能改善所有性能慢的场景。

通过ES慢日志可分析查询效率

ES提供了慢日志,但默认是没有开启的。ES中的慢日志主要分两类:索引慢日志搜索慢日志。如何开启呢?参考如下:

PUT /my_index/_settings

{

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

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

"index.indexing.slowlog.threshold.index.info": "5s"

}

ES查询性能优化方案

1、升级硬件配置(硬盘、内存)

对于硬盘建议选用SSD,它比机械硬盘读写速度更快,另外内存需要适时调整。

2、JVM参数调优

要知道ES是用Java开发的,跑在JVM中,如果JVM参数设置不当也会影响ES的性能!ES安装后默认的堆内存是1G,这个值太小了,需要适当调大。

3、加大文件系统缓存设置

ES依懒底层的FileSystem Cache,文件系统缓存值若太小则会导致ES查询时会从硬盘中查询,效率低。若文件系统缓存大小设置合理,则很多查询可以直接从缓存内查询。

4、减少副本数量

ES默认副本是3个,副本越多虽然能提高集群的可用性,但是也增加了搜索的并发数、也会影响索引写入效率。所以建议副本不要过多,一般1~3个足够了。

5、禁止深度分页

ES它的分页效率很低(若每页10条,查询第100页时,ES实际查询的是每个Shard中的1000条数据进行处理后再返回第100页里的10条数据),页数越靠后,CPU消耗越大,查询效率越低!所以我们要禁止深度分页。

6、Filter 比 Query 效率好

Filter查询结果可以缓存,而且不需要像Query那样计算相关性分值,所以Filter效率更高。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

es大索引如何处理

ES(Elasticsearch)的大索引处理可以采取以下几种方法:
1. 使用分片和副本:ES将索引分为多个分片(shard),每个分片存储部分数据,可以水平扩展。同时,每个分片还可以创建多个副本(replica)来提高数据的可靠性和查询性能。
2. 提前划分分片:可以在创建索引时就指定分片数量,以适应预期的数据量和查询负载。可以根据数据量、节点数量和硬件性能等因素,进行合理的分片设置。
3. 优化查询性能:利用ES的查询性能优化功能,如使用适当的查询类型、过滤器、聚合操作等,减少查询的响应时间。
4. 使用路由参数:当索引数据量很大时,可以使用路由参数来将数据分配到特定的分片中。这样可以避免某些热点数据集中在单个分片上,提高整体查询性能。
5. 增加硬件资源:如果数据量超过了单个节点的处理能力,可以通过增加硬件资源,如CPU、内存、存储空间等,来提高整体索引的性能。
6. 定期维护索引:定期执行索引的刷新、优化、合并等维护操作,可以提高索引的查询性能和空间利用率。
需要根据具体的业务需求和系统资源情况,采取合适的方法来处理大索引问题。

相关标签: # 计 # Java # 热点

  • 评论列表 (0条)

 暂无评论,快来抢沙发吧~

发布评论