插入

时间:2017-10-23 07:23:52

标签: python elasticsearch pyes

我有一个测试,它执行以下操作:

  1. 使用pyes在ES上创建索引
  2. 插入映射
  3. 插入数据
  4. 查询数据以检查其是否符合预期结果
  5. 然而,当我运行此测试时,有时会发现没有结果,有时它会找到一些东西,但缺少一些数据。有趣的是,只有在我自动运行测试时才会发生这种情况。如果我逐行输入代码,一切都按预期工作。我已经手动测试了3次,但没有失败。

    有时我甚至收到了这条消息:

    NoServerAvailable: list index out of range
    

    似乎根本没有创建索引

    我已经ping了我的ES地址,一切看起来都很正确。在任何地方都没有发现其他错误信息。

    我认为这是因为我试图在插入后过快地获取数据,如下所示:Elastic Search No server available, list index out of range

    (检查接受的答案中的第一条评论)

    然而,即使我延迟4秒左右,这个问题仍然会发生。我担心的是,有时只有一些数据丢失,这真的很奇怪。我认为要么全部找到,要么全部错过。

    任何人都有类似的经历,可以对这个问题有所启发吗?感谢。

1 个答案:

答案 0 :(得分:0)

Elasticsearch是近实时(NRT)。最近索引的文档可能需要1秒才能显示/可用于搜索。 要使您最近编制索引的文档立即可供搜索,您可以在索引文档命令的末尾附加?refresh=wait_for。例如,

POST index/type?refresh=wait_for
{
  "field1":"test",
  "field2":2,
  "field3":"testing"
}

?refresh=wait_for将强制刷新您的索引,以使最近编入索引的文档可供搜索。请参阅?refresh