搜索延迟 嗨,我删除实时数据并将该数据传递给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如何解决这个问题。
答案 0 :(得分:2)
近乎实时地调用Elasticsearch,因为在索引文档和搜索中出现的文档之间存在一个小的延迟。
您需要刷新索引以便文档显示在搜索中,默认情况下每1秒刷新一次,这就是使用Postman时文档在1秒后出现的原因。
在docs中,您有一些解决方案,其中包括在索引请求中设置refresh
参数:
将刷新设置为true
:每次索引操作后刷新,文档将立即显示。
将刷新设置为wait_for
:这样您的索引请求将等到刷新,因此您将能够在Promise链中检查您刚刚在搜索请求中编入索引的文档
这取决于您的用例,但是您应该小心使用refresh: true
进行大量索引操作,因为它可能会使服务器陷入困境。