2017-10-13 65 views
0

在我的程序中,我从elasticsearch删除了一条记录,然后我提取剩余的记录。弹性搜索删除记录需要多长时间?

我写了2个独立的方法。 1删除记录的方法。 另一个提取剩余的记录。

但是,当我运行这两个方法它正在返回包括我删除的所有记录。

我正在运行程序来获取数据后才从deleteRecords获得成功消息,但它是给所有记录。

几秒钟后如果我运行我编写的程序来单独提取剩余记录,它工作正常它将单独返回剩余的方法。

当我试图运行在调试模式两种方法也只剩余的记录

有什么办法来解决这个问题,而无需使用延迟

回答

2

该指数是每秒钟刷新一次默认情况下返回,所以这就是为什么你不会立即看到结果。您可以做的是在您的删除呼叫中附加?refresh=wait_for,以确保下一次呼叫将获得您期望的正确结果。

请注意,添加此查询字符串参数会稍微延迟您的呼叫。在最坏的情况下,它会在1秒后返回,这是最好的情况,它会立即返回,取决于您拨打电话的两次刷新之间的时间。

+0

谢谢...... –

+0

其他问题,我们可以关闭吗? – Val

0

如果您使用的是Java客户端,那么您正在寻找API操作的线程。

默认情况下,它是一个单独的线程,它将执行删除操作,除非您明确要求它在提供请求的线程上执行(与@ Val的答案匹配)。这样API调用将会阻塞,直到操作完成。

DeleteResponse response = client.prepareDelete("documents", "doc", "1") 
     .setOperationThreaded(false) //look here!!!! 
     .get();