使用Elasticsearch javascript客户端(node.js),循环索引中每个文档(约10万个文档)的最佳(或最简单)方法是什么?
Joh*_*one 12
我认为一个好的起点是使用滚动API进行扫描查询:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html
基本上它类似于带有数据库的游标 - 您打开带有时间限制的查询并返回滚动ID.然后,您使用该滚动ID来检索第一批结果,并返回文档以及新的滚动ID.以下示例:
curl -XGET 'localhost:9200/_search?search_type=scan&scroll=10m&size=1000' -d '
{
"query" : {
"match_all" : {}
}
}
'
Run Code Online (Sandbox Code Playgroud)
这将返回_scroll_id,然后您可以使用它来检索文档:
curl -XGET 'localhost:9200/_search/scroll?scroll=10m' -d '<_SCROLL_ID_HERE>'
Run Code Online (Sandbox Code Playgroud)
请注意,这将返回1000个文件PER PRIMARY SHARD - 因此,如果您有4个主分片,它将返回4000个文档.除了文档之外,每次调用都会返回一个新的_scroll_id,然后您将其用于下一次调用."scroll = 10m"设置10m的时间限制以保持呼叫之间的滚动打开.
| 归档时间: |
|
| 查看次数: |
6747 次 |
| 最近记录: |