我正在使用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日志,您会注意到一个错误。