ElasticSearch Delete By Query API中的批处理和requests_per_second

时间:2018-06-04 18:17:39

标签: elasticsearch

我正在从这里https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html#docs-delete-by-query阅读“按查询API删除”。

我很困惑如何为此API工作batchesrequests_per_second。我尝试检查源代码https://github.com/elastic/elasticsearch,但找不到正确相关的代码。

感谢任何解释。

1 个答案:

答案 0 :(得分:0)

按查询删除会针对您的索引发出查询。通过批量请求删除匹配的文档。您可以使用scroll_size参数来设置每个批量请求删除的文档数量 - 这通常称为“批量大小”。要限制操作,可以将requests_per_second设置为正十进制值。该值与等待时间的对应关系在其文档中进行了解释:

  

requests_per_second可以设置为任何正十进制数(1.4,6,1000等)和限制速率,在此速率下,_delete_by_query通过用等待时间填充每个批次来发出批量删除操作。可以通过将requests_per_second设置为-1来禁用限制。

     

通过在批处理之间等待来完成限制,以便_delete_by_query在内部使用的滚动可以被赋予考虑填充的超时。填充时间是批量大小除以requests_per_second与写入时间之间的差异。默认情况下,批处理大小为1000,因此如果requests_per_second设置为500:

     

target_time =每秒1000/500 = 2秒   wait_time = target_time - write_time = 2秒 - .5秒= 1.5秒