在Elasticsearch Nest 5.5中使用.Scroll时遇到问题

时间:2017-10-04 09:34:01

标签: elasticsearch nest

我想使用scrollid循环并滚动数据 我已升级到NEST 5.5并尝试修复此代码块:

scrollGetSearch = client.Raw.ScrollGet(scrollId, x => x
    .AddQueryString("scroll", "1m")
    .AddQueryString("size", "1000"));

尝试使用.Scroll但无法找到滚动方法的正确参数:

scrollGetSearch = client.Scroll("1m",scrollId)

获取错误

  

方法的类型参数' Nest.ElasticClient.Scroll(Nest.Time,   string,System.Func,Nest.IScrollRequest>)'   无法从使用中推断出来。尝试指定类型参数   明确。

1 个答案:

答案 0 :(得分:1)

您的第一个请求使用低级客户端Elasticsearch.Net,而第二个请求使用高级客户端。

在NEST 5.x中执行相同的低级别请求

ElasticsearchResponse<T> lowLevelScrollResponse = client.LowLevel.ScrollGet<T>(x => x
    .AddQueryString("scroll_id", scrollId)
    .AddQueryString("scroll", "1m"));

通用参数T应该是响应主体应被反序列化的类型,例如stringbyte[]或者因为您正在使用高级客户端上公开的低级客户端,高级响应SearchResponse<TDocument>,其中TDocument是每个类型_source应该被反序列化。由于在第一次滚动调用size端点时配置了大小,因此无需在滚动请求中指定_search

使用高级客户端执行相同的搜索

ISearchResponse<T> scrollResponse = client.Scroll<T>("1m", scrollId);