elasticsearch Elasticsearch“扫描”后的文档计数不正确&`滚动`然后滚动`刷新`&`冲洗`
我使用
elasticsearch Elasticsearch“扫描”后的文档计数不正确&`滚动`然后滚动`刷新`&`冲洗`,
elasticsearch,nest,
elasticsearch,Nest,我使用scan和scroll从旧索引重新索引到新索引。在重新索引完成后,我立即执行刷新和刷新,希望数据能持久保存到磁盘中。然后我立即读取两个索引的文档计数。新索引通常没有文档。我必须重复读取循环中的文档计数(每次迭代暂停1秒)。大约20秒后,我将看到相等的文档计数。(两个索引的刷新率均设置为30秒) 根据我的理解,调用刷新或刷新,我应该可以看到实际的文档计数。但事实并非如此。在Elasticsearch1.6中,您可以使用: curl -XPOST localhost:9200/index/_f
scan
和scroll
从旧索引重新索引到新索引。在重新索引完成后,我立即执行刷新
和刷新
,希望数据能持久保存到磁盘中。然后我立即读取两个索引的文档计数。新索引通常没有文档。我必须重复读取循环中的文档计数(每次迭代暂停1秒)。大约20秒后,我将看到相等的文档计数。(两个索引的刷新率均设置为30秒)
根据我的理解,调用刷新
或刷新
,我应该可以看到实际的文档计数。但事实并非如此。在Elasticsearch1.6中,您可以使用:
curl -XPOST localhost:9200/index/_flush/synced
到
同步
刷新
执行完成。谢谢。成功了。但是没有提到这个api会被阻塞,即使api的名字暗示了这一点。同步刷新执行正常刷新,然后向所有碎片添加生成的唯一标记(sync_id)。据我所知,synchronized flush
仅仅是一个flush
+标记。@foresightyj您可以查看以获得更多详细信息。是的。我确实读了几遍(刷新
,刷新
,同步刷新
)。我不关心是否所有数据都被持久化。我只想确保新索引的数据数量与旧索引的数据数量相同(无论是在内存中还是在translog中)。这三个API的文档没有提到它们是同步的还是异步的。从我观察到的结果来看,refresh
和flush
是异步的,synched flush
,顾名思义,是同步的。最初我认为flush
api中的wait\u if\u continuousing
是同步的方法,但是仔细看一下doc,它只会阻塞直到可以开始刷新,而不会等到刷新完成。