一尘不染

Elastic Search GET没有提供最新文档

elasticsearch

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

POST操作后立即使用GET操作时,我没有得到准确的文档计数。如果我在POST和GET之间睡眠> 1秒,则GET操作能够给出准确的计数。

我的操作流程是:1)使用POST操作过帐新事务(文档)。2)使用GET操作检索文档总数。这是在POST之后。

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


阅读 232

收藏
2020-06-22

共1个答案

一尘不染

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

如果那困扰您,您有几种选择:

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

只是知道,从性能的角度来看,实现所需目标的最不积极的方法是3,即ES
5中引入的新参数,该参数不会强制刷新索引,只有在新索引文档可用时才会返回搜索。过于频繁地刷新(1、2和3)可能会降低性能。

2020-06-22