如何在大规模数据环境下运行ES搜索引擎

tamoadmin 市场行情 2024-04-07 28 0

在大规模数据环境下运行ES搜索引擎,主要涉及到以下几个方面:

1.ES搜索引擎的基本概念和特性

ES是一个实时的分布式搜索和分析引擎,它可以帮助你以前所未有的速度处理大规模数据。它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。ES是一个建立在全文搜索引擎Apache

Lucene™基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。ES使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。ES除了做全索引外,还可以做如下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

2.ES搜索引擎的优缺点

ES是分布式的,不需要其它组件,分发是实时由ES主节点内部自动完成的。处理多组用户,而不需特殊配置。ES使用gateway的概念,使得备份更简单。当ES节点发生故障时,可以进行自动分配其它节点替代。但是,文档太少,不易维护。目前觉得,建索引的速度不够快,期待有更好的方法。

3.ES搜索引擎在大规模数据环境下的运行策略

在大规模数据环境下运行ES搜索引擎,有一些关键的运行策略:

性能优化:ES的搜索引擎严重依赖于底层的filesystemcache,如果给filesystemcache更多的内存,尽量让内存可以容纳所有的index

segment

file索引数据文件,那么搜索的时候基本就是走内存的,性能会非常高。解决方案包括:机器的内存至少可以容纳总数据量的一半;尽量在es里就存储必须用来搜索的数据;设计好document的结构模型,J***a里面做好数据处理后直接写入document,在es里面查询的时候直接就拿整个document出来,不用额外去做类似查询处理了。

数据预热:对于热点数据,最好做一个专门的缓存预热子系统,就是对于热数据,每隔一段时间就提前访问一下,让数据进入filesystemcache里面去,这样下次别人访问的时候性能会好一些。

冷热分离:将冷数据写入一个索引中,热数据写入另一个索引中,这样可以确保热数据在被预热后,尽量让他留在filesystemcache里,别让冷数据给冲刷掉。

分页性能优化:ES的分页性能是比较差的,因为你从多个shard查询回的数据都要返回到协调节点上,查回的数据越多,协调节点处理数据(合并、排序等)的时间就越长。

如何在大规模数据环境下运行ES搜索引擎

分布式实现:Elasticsearch也是会对数据进行切分,同时每一个分片会保存多个副本,其原因是为了保证分布式环境下的高可用。在ES中,节点是对等的,节点间会通过自己的一些规则选取集群的Master,Master会负责集群状态信息的改变,并同步给其他节点。值得注意的是,只有建立索引和类型需要经过Master,数据的写入有一个简单的Routing规则,可以Route到集群中的任意节点,所以数据写入压力是分散在整个集群的。

以上就是关于如何在大规模数据环境下运行ES搜索引擎的一些基本知识和策略。

追问

延伸阅读

参考资料为您提炼了 5 个关键词,查找到 46646 篇相关资料。

如何在大规模数据环境下运行ES搜索引擎
ES搜索引擎的优缺点
在大数据环境下运行ES搜索引擎的解决方案
如何提高ES搜索引擎在大规模数据环境下的性能
分布式ES搜索引擎的应用场景