我使用的是Elastic 5.1.2版本。我使用Elastic java Restclient来发布和查询弹性搜索中的文档。
在POST操作后立即使用GET操作时,我无法获得准确的文档数。如果我睡了>在POST和GET之间1秒,然后GET操作能够给出准确的计数。
我的操作流程是: 1)使用POST操作发布新事务(文档)。 2)使用GET操作检索总文档的数量。这是在POST之后立即。
我在想,Elastic需要时间来更新索引。这是Elasticsearch或我的任何设置的问题。请帮忙
答案 0 :(得分:2)
这是正常行为!当您索引新数据时,它不会立即可用,但会在默认情况下每秒发生一次的下一次刷新之后。
如果这困扰你,你有几个选择:
/_refresh
endpoint,这将立即刷新您的索引并且下一个GET调用将起作用?refresh=true
parameter,这基本上与1 ?refresh=wait_for
parameter,并且只有在刷新操作发生时才会返回调用,以便下一个GET调用将返回文档index.refresh_interval
(默认为1秒),以便更频繁地进行刷新操作。只要知道从性能的角度来看,实现你想要的最不激进的方式是3,即在ES 5中引入的新参数不会强制刷新你的索引,但只会返回一次新索引的文件可供搜索。过于频繁地强制刷新(1,2和3)可能会导致性能下降。