gpt4 book ai didi

elasticsearch - ElasticSearch NEST API 中的滚动示例

转载 作者:行者123 更新时间:2023-11-29 02:45:21 25 4
gpt4 key购买 nike

我正在使用 .From() 和 .Size() 方法从 Elastic Search 结果中检索所有文档。

下面是示例 -

ISearchResponse<dynamic> bResponse = ObjElasticClient.Search<dynamic>(s => s.From(0).Size(25000).Index("accounts").AllTypes().Query(Query));

最近我遇到了 Elastic Search 的滚动功能。这看起来比专门用于获取大数据的 From() 和 Size() 方法更好。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html

我正在寻找有关 NEST API 中滚动功能的示例。

有人可以提供 NEST 示例吗?

谢谢,萨米尔

最佳答案

下面是一个使用 NEST 和 C# 滚动的例子。适用于 5.x 和 6.x

public IEnumerable<T> GetAllDocumentsInIndex<T>(string indexName, string scrollTimeout = "2m", int scrollSize = 1000) where T : class
{
ISearchResponse<T> initialResponse = this.ElasticClient.Search<T>
(scr => scr.Index(indexName)
.From(0)
.Take(scrollSize)
.MatchAll()
.Scroll(scrollTimeout));

List<T> results = new List<T>();

if (!initialResponse.IsValid || string.IsNullOrEmpty(initialResponse.ScrollId))
throw new Exception(initialResponse.ServerError.Error.Reason);

if (initialResponse.Documents.Any())
results.AddRange(initialResponse.Documents);

string scrollid = initialResponse.ScrollId;
bool isScrollSetHasData = true;
while (isScrollSetHasData)
{
ISearchResponse<T> loopingResponse = this.ElasticClient.Scroll<T>(scrollTimeout, scrollid);
if (loopingResponse.IsValid)
{
results.AddRange(loopingResponse.Documents);
scrollid = loopingResponse.ScrollId;
}
isScrollSetHasData = loopingResponse.Documents.Any();
}

this.ElasticClient.ClearScroll(new ClearScrollRequest(scrollid));
return results;
}

来自:http://telegraphrepaircompany.com/elasticsearch-nest-scroll-api-c/

关于elasticsearch - ElasticSearch NEST API 中的滚动示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31327814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com