【问题标题】:Having problems with using .Scroll in Elasticsearch Nest 5.5在 Elasticsearch Nest 5.5 中使用 .Scroll 时遇到问题
【发布时间】:2017-10-05 05:05:01
【问题描述】:

然后我想使用 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, 字符串,System.Func,Nest.IScrollRequest>)' 不能从用法中推断出来。尝试指定类型参数 明确的。

【问题讨论】:

    标签: elasticsearch nest


    【解决方案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&lt;TDocument&gt;,其中 TDocument 是每个 _source 应该反序列化的类型。无需在滚动请求上指定 size,因为大小是在对 _search 端点的第一次滚动调用时配置的。

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

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

    【讨论】:

    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 2015-07-24
    • 2019-08-25
    • 2019-03-26
    • 2014-03-11
    相关资源
    最近更新 更多