我试图弄清楚如何使用NEST 2.3.2检索大量文档。由于响应中的文档数量有限制(由服务器管理员设置),我想使用Scroll是安全的。
我已阅读this,但我找不到使用NEST 2.3.2库实现这一目标的方法。此documentation适用于1.x,但不适用于2.x。
具体来说,当我尝试在SearchType = Elasticsearch.Net.SearchType.Scan
中设置SearchRequest
时,它会自动向/_search?search_type=scan
发送请求,服务器只返回“search_phase_execution_exception”,因为“扫描时必须提供滚动”。 ..“。但我不知道如何获得滚动ID。
有谁知道如何实现这一目标?我想用可能的几个请求滚动限定文档,直到它们全部被检索。如果有人可以提供一些非常有用的示例代码。非常感谢你。
答案 0 :(得分:2)
我尝试了类似这样的问题,我需要将所有文档编入索引,然后进行一些处理。我用过滚动。您可以从here
查看我的问题var scanResults = client.Search<IndexName>(s => s
.From(0)
.Size(20) //any size you can give
.MatchAll()
.Source(so => so
.Include(fi => fi.Field(fieldName))
.SearchType(Elasticsearch.Net.SearchType.Scan)
.Scroll("5m") //time for which the scrollId is saved. Can be anything.
);
var results = client.Scroll<IndexName>("10m", scanResults.ScrollId);
while (results.Documents.Any())
{
//do whatever you want to do from the resultant documents
results = client.Scroll<IndexName>("10m", results.ScrollId);
}
有关scroll
的更多信息希望这有帮助。