在ElasticSearch 2.x版中扫描和滚动替换(NEST C#)

Nei*_*nas 2 .net c# elasticsearch nest

Ive已成功使用Elastic 1.x扫描和 NEST API 滚动来获取与我的查询匹配的所有文档。开始一个新项目,并认为我会使用最新的Elastic版本2.x,并偶然发现第一个障碍-如何返回所有与查询匹配的文档(在C#中使用NEST)?

任何建议表示赞赏,谢谢

Rus*_*Cam 5

Scroll 在Elasticsearch 2.x中

同步版本

var response = client.Search<object>(s => s
    // specify a scroll time of 2 minutes using string,
    // implicitly converts to Time type
    .Scroll("2m")
    .Sort(ss => ss
        // sorting on "_doc"
        .Ascending(SortSpecialField.DocumentIndexOrder)
    )
);
Run Code Online (Sandbox Code Playgroud)

异步版本

var response = await client.SearchAsync<object>(s => s
    // specify a scroll time of 2 minutes using Time type
    .Scroll(new Time(2, Nest.TimeUnit.Minute))
    .Sort(ss => ss
         // sorting on "_doc"
        .Ascending(SortSpecialField.DocumentIndexOrder)
    )
);
Run Code Online (Sandbox Code Playgroud)

有关单位的更多信息Time

  • @batmaci滚动是一种获取大量结果的好方法,但是***您不会在一个请求中获得所有结果***;您每次需要使用前一组结果返回的`scroll_id`来请求下一组结果。将`scroll_id`视为仅向前,只读,将光标放在结果集上 (2认同)
  • 在性能方面,要考虑许多因素,例如负载,硬件等,因此很难在此处提供明确的答案。滚动查询的大小是每个分片***的文档数,因此请记住这一点。我将对几种不同的尺寸进行基准测试,以查看哪种方法最适合您的情况。在`_doc`上进行排序滚动将是检索所有文档的最佳方式 (2认同)