Elasticsearch scroll API 在后续调用时返回 { "message" :null}



我正在使用elasticsearch的滚动API来获取某个类型的所有文档。最初的调用按预期工作,但当我用更新的令牌进行第二次调用时,我得到了

{"message":null}

而不是下一组结果。

我正在使用nodejs与request.js和HAR一起调用弹性搜索集群,希望它能很容易地理解下一条信息:

第一次呼叫:

var har = {
    method: 'GET',
    url: esURL + 'index/type/_search?scroll=2m'
};

结果:

{ _scroll_id: 'cXVlcnlUaGVuRmV0Y2g7NTs2OTgxNTpXeUt4MFpqaFRraW9GWUZ1dEREUGRnOzUyMzY2OkZjLWVtOHdIUXhPVlVjX1JOTEdpZnc7NTIzNjc6RmMtZW04d0hReE9WVWNfUk5MR2lmdzs1MjM1NzppckFITVpLYlJvYUZqN3hzSW05SEtROzUyMzY4OkZjLWVtOHdIUXhPVlVjX1JOTEdpZnc7MDs=',
  took: 10,
  timed_out: false,
  _shards: { total: 5, successful: 5, failed: 0 },
  hits: 
   { total: 96,
     max_score: 1,
     hits: 
      [ [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object] ] } }

下一个电话:

var har = {
    method: 'GET',
    url: esURL + '_search/scroll?scroll=2m&scroll_id=cXVlcnlUaGVuRmV0Y2g7NTs2OTgxNTpXeUt4MFpqaFRraW9GWUZ1dEREUGRnOzUyMzY2OkZjLWVtOHdIUXhPVlVjX1JOTEdpZnc7NTIzNjc6RmMtZW04d0hReE9WVWNfUk5MR2lmdzs1MjM1NzppckFITVpLYlJvYUZqN3hzSW05SEtROzUyMzY4OkZjLWVtOHdIUXhPVlVjX1JOTEdpZnc7MDs='
};

结果:

{ message: null }

想知道是否有人经历过这个问题。

问题在于您的初始调用,您没有将search_type指定为scan,因此默认情况下执行query_then_fetch

你的第一个电话应该是

var har = {
    method: 'GET',
    url: esURL + 'index/type/_search?search_type=scan&scroll=2m' 
}; 

此外,如果您检查ES日志,您会注意到一个错误。

相关内容

最新更新