elasticseach 2.4:使用滚动检索所有满足所有搜索标准的记录

时间:2016-10-21 07:08:03

标签: sorting elasticsearch scroll nest

我第一次使用弹性搜索并根据要求我对滚动有一些疑问和问题

检索满足所有搜索条件的所有数据 1)我正在尝试使用滚动但我在搜索时发现了  https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_21_search_changes.html 我发现不推荐使用搜索类型扫描 但是NEST正在支持它 我应该使用"搜索类型扫描"或者"按文档排序"? (我正在使用弹性搜索2.4)

2)我可以在任何领域使用"排序"使用滚动时?

3)同时做清晰的滚动  var test2 = client.ClearScroll(x => x.ScrollId(results.ScrollId));

获取如下错误: 从DELETE:/ _search / scroll

上的不成功的低级别调用构建的无效NEST响应

此API调用的审计跟踪:

  • [1] BadResponse:Node:http://mydomain@localhost:9200/ Took:00:00:00.0160110

    OriginalException:System.Net.WebException:远程服务器返回错误:(404)Not Found。

    at System.Net.HttpWebRequest.GetResponse() 在Elasticsearch.Net.HttpConnection.Request [TReturn](RequestData requestData)在C:\ Users \ russ \ source \ elasticsearch-net-2.x \ src \ Elasticsearch.Net \ Connection \ HttpConnection.cs:第141行

    请求:

{" scroll_id":[" c2NhbjswOzE7dG90YWxfaGl0czoxMjs ="]}

响应:

{}

是否正确清除滚动​​方式?

更新::以下是我的代码:

localhost:8000\testSession\id?otp="someStringValue"

//清除滚动

使用上面的代码我得到数据 但如果我将大小从10改为1000,则没有记录。 不确定问题是否是数据量,因为我的ES数据库只有12-15个文档。

1 个答案:

答案 0 :(得分:1)

NEST 2.x版本有SearchType.Scan,因为NEST 2.x版本与所有Elasticsearch 2.x版本兼容,因此在针对Elasticsearch 2.0使用NEST 2.x时需要存在搜索类型。在以后的版本中发送搜索类型不会产生任何影响。

使用滚动检索文档的最有效方法是按_doc排序,但您可以在滚动时指定任何排序参数。

使用滚动API时,您应该在下一次滚动调用中使用上一个请求中的scroll_id来获取下一组结果。完成滚动后,最好通过调用ClearScroll()来清除它。你的电话看起来正确;也许scroll_id已经在你明确通话的时候到期了?