gpt4 book ai didi

java - Elastic Search GET 未提供最新文档

转载 作者:行者123 更新时间:2023-12-02 03:00:40 25 4
gpt4 key购买 nike

我使用的是Elastic 5.1.2版本。我正在使用 Elastic java Restclient 从 Elastic 搜索中发布和查询文档。

当我在 POST 操作后立即使用 GET 操作时,我无法获得准确的文档计数。如果我在 POST 和 GET 之间 hibernate > 1 秒,那么 GET 操作就能够给出准确的计数。

我的操作流程是:1)使用POST操作发布一个新的交易(文档)。2) 使用 GET 操作检索文档总数。这是紧随 POST 之后的内容。

我认为,Elastic 需要时间来更新索引。这是 Elasticsearch 的问题还是我的任何设置的问题。请帮忙

最佳答案

这是正常行为!当您为新数据建立索引时,它不会立即可用,而是在下次刷新后可用,默认情况下每秒发生一次。

如果这让您烦恼,您有几种选择:

  1. 您可以调用/_refresh endpoint发布您的文档后,这将立即刷新您的索引,并且下一个 GET 调用将起作用
  2. 您可以添加?refresh=true parameter当您索引文档时,在 POST 调用中,这基本上与 1 相同
  3. 您可以添加?refresh=wait_for parameter当您索引文档时,在 POST 调用中,该调用仅在发生刷新操作时返回,以便下一个 GET 调用将返回文档
  4. 您可以减少设置中的 index.refresh_interval(默认为 1 秒),以便更频繁地进行刷新操作。

只需知道,从性能的角度来看,实现您想要的效果的最不激进的方法是 3,即这是 ES 5 中引入的一个新参数,它不会强制刷新您的索引,但只会返回一次新索引的文档可供搜索。过于频繁地强制刷新(1、2 和 3)可能会降低您的性能。

关于java - Elastic Search GET 未提供最新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42406674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com