搜索延迟Elasticsearch

时间:2018-02-22 08:23:05

标签: javascript node.js elasticsearch search

搜索延迟 嗨,我删除实时数据并将该数据传递给Elastic搜索以对其进行索引。索引后我搜索结果,索引和搜索之间的时间间隔小于一秒。因此,我得到每次发现零结果的响应,但是当我通过邮递员检查时,我得到数据。

 .then(record => {
       listofmovies = duplicate.removeDuplicate(record);
       results = listofmovies.concat(youtubemovies);
       console.log("results :" + results.length);
       return es.create(results);

    })
    .then(result=>{ 
      console.log("searching");
      return es.search(req.body.q);
    })

在代码es.create中创建索引并在完成后返回promise我搜索索引也返回promise.so如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

近乎实时地调用Elasticsearch,因为在索引文档和搜索中出现的文档之间存在一个小的延迟。

您需要刷新索引以便文档显示在搜索中,默认情况下每1秒刷新一次,这就是使用Postman时文档在1秒后出现的原因。

docs中,您有一些解决方案,其中包括在索引请求中设置refresh参数:

  • 将刷新设置为true:每次索引操作后刷新,文档将立即显示。

  • 将刷新设置为wait_for:这样您的索引请求将等到刷新,因此您将能够在Promise链中检查您刚刚在搜索请求中编入索引的文档

这取决于您的用例,但是您应该小心使用refresh: true进行大量索引操作,因为它可能会使服务器陷入困境。