1

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

  1. 使用 pyes 在 ES 上创建索引
  2. 插入映射
  3. 插入数据
  4. 查询数据以检查它是否符合预期结果

但是,当我运行此测试时,有时它会找不到结果,有时它会找到一些东西但缺少一些数据。有趣的是,这只发生在我自动运行测试时。如果我逐行输入代码,一切都会按预期工作。我已经手动测试了 3 次,它可以正常工作。

有时我什至会收到这样的消息:

NoServerAvailable: list index out of range

似乎根本没有创建索引

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

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

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

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

有没有人有类似的经验可以对这个问题有所了解?谢谢。

4

1 回答 1

0

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

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

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

于 2017-10-23T07:35:36.967 回答