【发布时间】:2016-03-30 14:09:57
【问题描述】:
var settings = new ConnectionSettings(Constants.ElasticSearch.Node);
var client = new ElasticClient(settings);
var response = client.Search<DtoTypes.Customer.SearchResult>(s =>
s.From(0)
.Size(100000)
.Query(q => q.MatchAll()));
它在大小较小时有效,但我想检索包含超过 100k 个文档的索引中的所有文档。必须是我缺少的配置设置才能绕过限制。我也试过Take() 而不是Size()
返回的调试信息是
“由不成功的低级别调用构建的无效 NEST 响应 POST: /_search\r\n# 此 API 调用的审核跟踪:\r\n - BadResponse: 节点:http://127.0.0.1:9200/ 接受:00:00:00.2964038\r\n# ServerError: 服务器错误:500 类型:search_phase_execution_exception 原因:\"all 分片失败\"\r\n# OriginalException: System.Net.WebException: The 远程服务器返回错误: (500) 内部服务器错误。\r\n at System.Net.HttpWebRequest.GetResponse()\r\n 在 Elasticsearch.Net.HttpConnection.Request[TReturn](RequestData 请求数据)在 C:\users\russ\source\elasticsearch-net\src\Elasticsearch.Net\Connection\HttpConnection.cs:line 138\r\n# 请求:\r\n\r\n# 响应:\r\n\r\n"
【问题讨论】:
-
调试信息使查询期间在 elasticsearch 中似乎发生了一些事情,而不是在嵌套中。您是否尝试通过普通搜索 API 运行它?您应该能够从嵌套响应以及
response.RequestInformation中获取查询 -
也许this 的回答会对你有所帮助。
-
如果您在
ConnectionSettings上使用.DisableDirectStreaming(),您也可以在DebugInformation中看到请求和响应(您可能只想使用.DisableDirectStreaming()而在开发中而不是在生产中)
标签: elasticsearch nest