搜索缩放。弹性搜索 其优点和安装基本要求

下午好。我叫Roman Larchikov,我是Docsvision的技术支持工程师。本文是为那些对实现搜索扩展和了解Elasticsearch的技术细节感兴趣的人准备的。本文将讨论使用ES的原因,系统要求以及与从MS SQL Server进行搜索相比的优势。

如果您对更笼统的术语感兴趣,以了解我们如何在最新版本的平台中扩展搜索范围,我的同事在网络研讨会“ Docsvision ECM ”中谈到了这一点搜索缩放ElasticSearch。“

为什么选择Elasticsearch?


图片

首先,值得注意的是Docsvision 5.5平台的版本在模块化架构上与以前的版本根本不同。在这方面,我们需要确保在保持工作速度的同时几乎无限扩展系统的可能性。特别地,需要即使在其高速操作下也能够扩展索引服务。

在这方面,Docsvision 5.5版本引入了使用外部(卫星)数据库的可能性。现在,无需将所有数据存储在一个数据库中,而该数据库随着工作量的增加,每天都会成倍增长,这使数据库的维护过程,崩溃时恢复的速度变得复杂,并减慢了数据库本身的整体运行速度。

图片

对一个数据库使用所有数据库都是不好的。可以将数据传输到Docsvision 5.5中实现的单独的外部数据库中,从而可以正确地重组数据库。因此,如果我们谈论搜索,则索引数据可以已经存储在主数据库之外,从而消除了对其大小的影响。

易于定制,灵活性,可靠性,可伸缩性,索引编制速度和在线搜索都与Elasticsearch有关。

Elasticsearch非常面向文档。建立索引后,我们可以搜索,排序,过滤数据,而不是按列搜索数据行。这反过来演示了一种不同的数据检索方法,并表明Elasticsearch可以执行复杂的全文本搜索。

文档表示为JSON对象。同时,大多数编程语言都支持JSON序列化(将任何数据结构转换为位序列的过程),并且已经是NoSQL的标准格式。

1.介绍Elasticsearch


1.1。这是什么?


Elasticsearch是一个使用Lucene库并以Java编写的开源可伸缩全文搜索引擎。有关此引擎的所有优点的描述可在官方网站找到

它旨在用于文档/文件数据库中的复杂搜索。在Elasticsearch数据库中,表称为索引,而加载文档的过程称为索引。

它既可以视为JSON格式的非关系文档存储库,又可以视为基于Lucene全文本搜索的搜索引擎。官方客户端支持Java,NET(C#),Python,Groovy,JavaScript,PHP,Perl,Ruby。

ES由Elastic以及名为Elastic Stack的相关项目开发-Elasticsearch,Logstash,Beats和Kibana。

Elasticsearch负责存储和搜索数据(为简洁起见,我们将其称为ES)。

1.2。与MS SQL搜索引擎相比,Elasticsearch搜索引擎的优势


Docsvision 5.5可以选择要使用的搜索引擎。在本文中,我将重点介绍Elasticsearch搜索引擎的用法,并讨论其与MS SQL Server相比的优势。

主要优点:

  • 索引服务访问外部数据存储的能力。同时,在搜索过程中将正确索引数据并正确显示数据。使用SQL Server搜索引擎时,仅可以按存储在主数据库中的数据进行搜索。
  • ES是一个开源项目,许多全球公司都使用它来搜索庞大的数据集。
  • ES , , .
  • (). ES, SQL Server .
  • ES — , .
  • ES (, , ), .
  • , , , .
  • ES . .
  • . , , , , , .
  • , , , , .
  • ES ( ). Docsvision, ES , SQL .
  • — SQL. , , , . , .. , . , , .. . ES .
  • 添加语言时,数据库的大小不会增加。与ES不同,在MS SQL中使用全文本搜索时,索引数据会增加主数据库的大小,尤其是在以其他语言(例如俄语/中性/英语)配置索引的情况下。在这种情况下,如果仅选择一种用于索引的语言(例如中性),则索引表的增长已经增加了数倍。

2.安装Elasticsearch所需的软件和系统要求


ES不仅可以部署在高性能服务器上,还可以部署在笔记本电脑上。但是,如果我们谈论的是生产环境,那么您应该使用单独的服务器并遵守一些值得考虑的建议。

2.1。内存


ES的最关键资源是RAM。这是最有可能首先结束的主要资源。最小允许大小为8Gb,建议的大小为16到64 Gb。如果确实需要,可以允许更多。

图片

排序和聚合会消耗大量内存,因此提供足够的内存非常重要。具有64 GB RAM的计算机是理想的解决方案,但是具有32 GB和16 GB的计算机也是常见的。如果计算机上安装了8 GB或更少的内存,则可能导致相反的结果(最后,您可能需要多台此类“小型”计算机)。使用64 GB以上还具有其自身的特征。

2.2。中央处理器


通常,ES对处理器的要求不高,因此它的选择不如其他资源重要。

图片

但是您应该遵守规则。您应该选择具有多个内核的现代处理器。通常,群集中的服务器使用2到8核的计算机。

如果要在速度更快的处理器或具有多个内核的处理器之间进行选择,则应选择后者。与稍微更高的时钟频率相比,几个内核提供的附加并行性将产生更好的结果。

2.3。磁碟


光盘也是ES快速运行的重要资源。在使用群集时,这一点很重要,而对于具有大量索引数据的群集而言,则至关重要。

磁盘是服务器上最慢的子系统,这意味着具有密集记录的群集可能会给磁盘增加高负载,这反过来又成为服务器的瓶颈。如果可以使用固态驱动器,则必须使用它们,因为它们远胜于任何旋转介质。支持SSD的主机在查询和索引编制性能上都有明显的提高。

图片

如果打算使用硬盘(HDD),则建议使用高性能服务器磁盘(主轴速度为15,000 rpm的磁盘)。

使用RAID 0是提高旋转磁盘和SSD的磁盘速度的有效方法。无需将RAID选项与镜像或奇偶校验一起使用,因为ES通过副本内置在高可用性中。

2.4。I / O调度程序


如果使用固态驱动器,则应确保正确配置了操作系统的I / O调度程序。将数据写入磁盘时,I / O调度程序将决定何时将该数据实际发送到磁盘。在大多数情况下,使用默认的cfq调度程序(完全诚实的队列)。

该调度程序为每个进程分配时隙,然后优化将这些各种队列传送到磁盘。它针对与HDD一起使用进行了优化:旋转板的性质意味着根据物理位置将数据写入磁盘更为有效。

但是,这对于固态驱动器无效,因为它们不使用旋转板。而是使用截止日期或不使用。截止时间调度程序会根据记录等待的时间进行优化,而noop只是一个简单的FIFO队列。

这些简单的更改可以通过正确的调度程序显着提高写入吞吐量。

2.5。网络


快速可靠的网络对于分布式系统的性能至关重要。低延迟确保节点可以轻松交换数据,而高吞吐量则有助于移动和恢复数据。

现代数据中心网络(1 GbE,10 GbE)足以满足绝大多数群集的需求。

即使数据中心紧邻,也应避免跨多个数据中心的集群。绝对避免跨越较大地理距离的集群。

ES群集假定所有节点均相等。长时间的延迟会加剧分布式系统中的问题,并使调试和解决变得困难。

2.6。一般建议


值得优先考虑“中型”和“大型”机器,避免使用性能低下的机器,以消除仅启动ES的成本。同时,应避免使用真正庞大的机器:它们通常会导致资源的不平衡使用(例如,使用了所有内存,但没有使用中央处理器),并且如果必须在机器上运行多个节点,可能会增加后勤复杂性。

3.结论


在弄清Elasticsearch是什么,它的主要优点和安装要求之后,我们可以继续进行ES安装本身以在Docsvision中进行进一步配置。

关于如何安装和执行配置以及检查索引编制,即 在Docsvision工作能力,看我同事的出版物在这里

有趣的话题?然后,您可以使用此链接找到更多信息!在这里,你可以注册课程。

All Articles