【问题标题】:How to wait for reindexing in elasticsearch?如何等待弹性搜索中的重新索引?
【发布时间】:2016-08-09 16:56:12
【问题描述】:

我有一个ElasticSearch,索引为posts。我不时向它推送新文档。

我希望ElasticSearch 仅在所有文档都已编入索引时回复我的查询。我该怎么做?

【问题讨论】:

  • 推送文档和发送搜索查询是同一个程序吗?如果是,您可以在客户端进行控制,对吗?
  • @Val 是的,我可以。但是我怎么知道弹性搜索是否被索引?
  • 在 ES2 中你不能,但在 ES5 中,你可以使用?refresh=wait_for 发送索引查询,ES 只会在新文档准备好被搜索时才会响应。
  • 嗯,谢谢!在没有合成sleep(time) 的情况下,有什么方法可以在 2.x 中解决这个问题?

标签: elasticsearch


【解决方案1】:

在 ES 2 中,您可以在为新文档编制索引后立即调用 refresh API,但不建议在生产环境中这样做,因为这可能会降低集群的性能。

在 ES5 中,您将能够使用 ?refresh=wait_for 发送索引查询,并且 ES 只会在准备好搜索新文档时做出响应。

【讨论】:

  • 无法获得ES2 方法,即使在他们的文档中也是如此。你的意思是,ES 不会响应我的查询,直到它重新索引所有内容,如果我调用了刷新,对吧?
  • 不,您只需要同步完成所有操作,首先索引,然后调用刷新,然后发送您的查询
  • 您的意思是 refresh 仅在重新索引完成时才响应?
  • 当您进行索引调用(批量或其他方式)时,一旦它们完成,您就可以调用refresh,然后保证您的查询会考虑到新文档。
  • 我还没有测试过。今天让我测试一下,给你一个答案,拜托
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 2016-02-24
  • 1970-01-01
  • 2014-04-19
  • 2020-12-20
  • 1970-01-01
相关资源
最近更新 更多