Elasticsearch:如何提高 Elasticsearch 数据摄入速度

2021年8月17日   |   by mebius

在实际使用 Elasticsearch 时,我们需要把数据导入到 Elasticsearch 集群中。我们tgcode可以使用 Beats,Logstash 或者客户端把数据进行导入。有时面对大量的数据进行导入时,我们有什么办法来提高导入的速度呢?在今天的文章中,我们来讲一些比较实用的技巧。希望对你的工作有所帮助。

1)调整 refresh interval

根据你的系统要求调整 refresh_interval(默认 1 秒)。在很多的情况下,我们甚至可以把 refresh_interval 设置为 -1,这样可以最大限度地提高导入数据的速度。作为一个规则,当 refresh_interval 值越大,导入速度就会提高的越快。当我们把它设置为 -1 时,refresh 就被终止。

我们可以通过如下的方法来设置 refresh_interval:

PUT my_index/_settings
{
"index.refresh_interval": -1
}

一旦完成数据的导入工作后,我们可以再把 refresh_interval 设置为我们所想要的值。

2)禁用副本
你可以按照此官方指南禁用副本并根据你的要求进行设置。

PUT /my-index-000001/_settings
{
  "index" : {
    "number_of_replicas" : 0
  }
}

一旦完成对数据的摄入,我们再把number_of_replicas 设置为我们所想要的值。

3)自动 ID 字段

不要设置文档的 “_id” 字段。 如果没有必要,最好让 Elasticsearch 自动设置 “_id”。一旦设置文档的 _id,那么每次导入数据时会检查该 _id 的文档是否存在tgcode,然后决定是更新或是创建新的文档。这个检查的过程浪费时间。

4)使用Multiple Workers/Threads

使用多个 workers / threads 来索引。如果我们使用 Filebeat,我们也可以在 filebeat.yml 中设置 worker

5)使用官方客户端

使用“官方”Elasticsearch 客户端,因为它们旨在优化连接池并保持活动状态。

6)避免频繁更新

避免频繁更新(对同一文档),因为每次更新都会在 Elasticsearch 中创建一个新文档并将旧文档标记为已删除。 这可能会导致有多个已删除的文档和更大的段大小,它们在段合并过程中并不总是合并。 要解决此问题,你可以在用于调用索引 API 的应用程序(例如用 JavaPython 编写的搜索服务)中收集所有这些更新,以便 1) 删除不必要的更新(例如多个更新以计数器字段),以及 2)只向 Elasticsearch 发送一些更新。

7)仔细设计索引映射

设计索引映射时要小心。 不用于搜索的字段不要对它进行索引(默认为 true),这样会减少tgcode Elasticsearch 的倒排索引大小,节省字段的分析成本。我们可以参考文章 “Elasticsearch:inverted index,doc_values 及 source” 来控制一个字段或者一个 object 的索引。

如果我们已经知道数据的所有字段,那么事先定义好 mapping,并禁止动态修改 mapping。详细阅读,请参阅 “Elasticsearch:Dynamic mapping”。

8)谨慎使用分词器

在你的领域谨慎使用分析仪; 一些分析器(ngram 等)占用大量资源,会降低索引速度并显着增加大型文本字段的索引大小。

9)使用 Wait_For 参数

如果你的某些要求是立即搜索索引文档,那么在索引时使用 wait_for 参数而不是显式刷新。

10)使用 bulk API

使用批量 API 来索引多个文档,而不是单独索引多个文档。 批量 API 的性能取决于大小,而不是请求中的文档数量。

11)使用 SSD

使用 SSD 代替磁盘以加快段合并过程。

当然能充分提供摄入速度的方案有很多。有些云厂商也推出了自己的解决方案。这里就不一一赘述!

文章来源于互联网:Elasticsearch:如何提高 Elasticsearch 数据摄入速度

相关推荐: Beats:使用 Heartbeat 来检查 TLS 证书是否将要过期

在许多时候,我们需要监控一个网站的 TLS 证书。如果快要过期了,我们希望能发出警报。这个需求我们可tgcode以使用 Heartbeat 并在 Kibana 中的 Uptime 应用中来实现。 首先,我们来安装好自己的 Heartbeat,并修改它的配资文件…

Tags: , ,