我有一个存储文件的ElasticSearch索引,有时非常大。因为每次更新文档时底层的Lucene引擎实际上都在进行完全替换,即使我只修改了一个字段的值,整个文档也需要在后台更新。
对于大型的多MB文件,这可能需要相当长的时间(几百毫秒)。由于这是作为Web应用程序的一部分完成的,因此这是不可接受的。我现在正在做的是分支进程,因此在请求完成时在单独的线程上调用更新。
这很有效,但我对这个长期解决方案并不满意,部分原因是因为这意味着每次我为搜索引擎创建一个新界面时我都要重新编码分叉逻辑。这也意味着我基本上无法知道请求是否成功,或者是否发生了某种错误,而没有编写额外的代码来记录某个地方成功或不成功的请求。
所以我想知道是否有一个未知的功能,您可以向ElasticSearch发布UPDATE请求,并让他们返回确认,而无需等待更新任务实际完成。
如果你看一下documentation for Snapshot and Restore,你会在发出请求时看到,你可以添加wait_for_completion=true
,以便在收到结果之前让整个过程运行。
我想要的是相反的 - 将?wait_for_completion=false
添加到POST
请求的功能。