elasticsearch,Performance,Optimization,elasticsearch" /> elasticsearch,Performance,Optimization,elasticsearch" />

Performance elasticsearch“;“直到刷新为止”/&引用;“等待文档可搜索”;选择

Performance elasticsearch“;“直到刷新为止”/&引用;“等待文档可搜索”;选择,performance,optimization,elasticsearch,Performance,Optimization,elasticsearch,我需要在Elasticsearch中索引/更新文档,并等待文档可搜索(刷新完成)。Github上存在一个相关问题: 我不会强制刷新,因为它会影响索引性能,我需要经常执行此操作。 我试图等待1秒钟,如Github问题中所述。只要Elasticsearch没有压力,它就可以正常工作,但是当内存不足时(偶尔会发生这种情况),我发现刷新需要5到6秒的时间。因此,我尝试了另一种方法 我在后端编写了一个助手函数,等待“可搜索”文档达到给定版本。这很简单: - GET the document with re

我需要在Elasticsearch中索引/更新文档,并等待文档可搜索(刷新完成)。Github上存在一个相关问题:

我不会强制刷新,因为它会影响索引性能,我需要经常执行此操作。 我试图等待1秒钟,如Github问题中所述。只要Elasticsearch没有压力,它就可以正常工作,但是当内存不足时(偶尔会发生这种情况),我发现刷新需要5到6秒的时间。因此,我尝试了另一种方法

我在后端编写了一个助手函数,等待“可搜索”文档达到给定版本。这很简单:

- GET the document with realtime=false
- if there is a result
    - if result.version >= wanted.version.
        Return
    - else
        wait a little more and retry
- else if the doc is not found
    - HEAD the document with realtime=true (test if the doc exists in the transaction log)
        - if the doc is found (then it has just been created)
            wait a little more and retry
        - else
            Return. (the doc might have been created and deleted really fast)
所需版本是对文档编制索引后elasticsearch返回的版本

这个算法是可行的,但你可以看到它还远远不够完美

  • 首先,当elasticsearch面临压力时,它会向elasticsearch发出更多的呼叫,这不是一个好主意

  • 我看到弹性搜索在删除文档一段时间后重置了版本号。如果由于某种原因函数忽略了这一点,我们可能会等到文档再次到达这个版本。(这就是为什么我还添加了超时)


有人有更好的解决方案吗?自动缩放目前不是一个可接受的答案。

正如Guillaume Massé所说,一个解决方案即将合并到Elasticsearch中


因此,我建议等待内置功能,而不是实施定制解决方案。

我认为值得指出的是,Elasticsearch开源和公开开发的一个副作用是,仅仅因为Elasticsearch团队的某个人公开提出了一件事并不意味着它的公司政策,甚至不意味着一个好的解决方案主意我们几乎所有的提议都是公开的,因为开源应该是这样工作的。例如,你有一个更好的主意,把我链接到stackoverflow的帖子上。是的,我完全同意。我的意思是“暂时没有更好的解决办法”。我不想说“这是使用Elasticsearch的方式”。谢谢你指出这一点。我会修正答案让它更清楚。它即将被关闭/解决:谢谢@guillaumassé他们在公关中说它将在elasticsearch 5.0.0中提供