我有一个测试,它执行以下操作:
然而,当我运行此测试时,有时会发现没有结果,有时它会找到一些东西,但缺少一些数据。有趣的是,只有在我自动运行测试时才会发生这种情况。如果我逐行输入代码,一切都按预期工作。我已经手动测试了3次,但没有失败。
有时我甚至收到了这条消息:
NoServerAvailable: list index out of range
似乎根本没有创建索引
我已经ping了我的ES地址,一切看起来都很正确。在任何地方都没有发现其他错误信息。
我认为这是因为我试图在插入后过快地获取数据,如下所示:Elastic Search No server available, list index out of range
(检查接受的答案中的第一条评论)
然而,即使我延迟4秒左右,这个问题仍然会发生。我担心的是,有时只有一些数据丢失,这真的很奇怪。我认为要么全部找到,要么全部错过。
任何人都有类似的经历,可以对这个问题有所启发吗?感谢。
答案 0 :(得分:0)
Elasticsearch是近实时(NRT)。最近索引的文档可能需要1秒才能显示/可用于搜索。
要使您最近编制索引的文档立即可供搜索,您可以在索引文档命令的末尾附加?refresh=wait_for
。例如,
POST index/type?refresh=wait_for
{
"field1":"test",
"field2":2,
"field3":"testing"
}
?refresh=wait_for
将强制刷新您的索引,以使最近编入索引的文档可供搜索。请参阅?refresh。