3

我正在尝试遍历 elasticSearch 中的多个文档,并且正在使用 Sense(谷歌浏览器插件来执行此操作)。使用扫描和滚动来提高效率,我得到滚动 id 为:

POST _search?scroll=10m&search_type=scan
{
  "query": { "match_all": {}}
}

结果是:

{
   "_scroll_id": "c2Nhbjs1OzE4ODY6N[...]c5NTU0NTs=",
   "took": 10,
   "timed_out": false,
   "_shards": {
     "total": 5,
     "successful": 5,
     "failed": 0
  },
  "hits": {
     "total": 20000,
     "max_score": 0,
     "hits": []
  }
}

然后将其传递给 GET:

GET _search/scroll?scroll=1m&scroll_id="c2Nhbjs1OzE4ODY6N[...]c5NTU0NTs="

但我得到 0 个结果,特别是:

{
  "_index": "my_index",
  "_type": "_search",
  "_id": "scroll",
  "found": false
}
4

2 回答 2

4

my_index我发现了问题,我已经在服务器框中指定了索引。删除它并重新执行 post 命令:

POST /my_index/_search?scroll=10m&search_type=scan
{
    "query": { "match_all": {}}
}

并将生成的 scroll_id 传递为:

GET _search/scroll?scroll=1m&scroll_id="c2Nhbjs1OzE4ODY6N[...]c5NTU0NTs="

工作!

于 2015-07-30T13:00:30.510 回答
2

这在我的意义上是有效的(当然你应该从你的案例中替换 id;不要使用"

POST /test/_search?search_type=scan&scroll=1m
GET /_search/scroll?scroll=1m&scroll_id=c2Nhbjs1OzI[...]Tt0b3RhbF9oaXRzOjQ7
于 2015-07-30T12:28:29.213 回答