使用nest和elasticsearch索引很多 - 无法在任何节点上执行post

时间:2014-05-22 14:46:25

标签: elasticsearch nest

我试图使用Nest to Elasticsearch索引许多文档。事情很好,那里的文件数量有限,但是当我增加这个数字时 - 从1000到50,000就会引发错误。由于文件数量的原因,我不相信它 - 这可能是糟糕的数据。

我试图防止错误的数据 - 我只是索引具有id的文档。 id是从我的一个字段(upc)生成的。所以我很肯定每个文件都有一个id。我还要确保我的类对象是否有序列化到/来自所有可以为空的属性。

仍然,我没有任何信息可以帮助我解决这个错误。

我得到的错误是..

Unable to perform request: 'POST' on any of the nodes after retrying 0 times

以及抛出错误时的堆栈跟踪:

 at Elasticsearch.Net.Connection.Transport.RetryRequest[T](TransportRequestState`1 requestState, Uri baseUri, Int32 retried, Exception e) in c:\Projects\NEST\src\Elasticsearch.Net\Connection\Transport.cs:line 241
 at Elasticsearch.Net.Connection.Transport.DoRequest[T](TransportRequestState`1 requestState, Int32 retried) in c:\Projects\NEST\src\Elasticsearch.Net\Connection\Transport.cs:line 215
 at Elasticsearch.Net.Connection.Transport.DoRequest[T](String method, String path, Object data, IRequestParameters requestParameters) in c:\Projects\NEST\src\Elasticsearch.Net\Connection\Transport.cs:line 163
 at Elasticsearch.Net.ElasticsearchClient.DoRequest[T](String method, String path, Object data, BaseRequestParameters requestParameters) in c:\Projects\NEST\src\Elasticsearch.Net\ElasticsearchClient.cs:line 75
 at Elasticsearch.Net.ElasticsearchClient.Bulk[T](Object body, Func`2 requestParameters) in c:\Projects\NEST\src\Elasticsearch.Net\ElasticsearchClient.Generated.cs:line 45
 at Nest.RawDispatch.BulkDispatch[T](ElasticsearchPathInfo`1 pathInfo, Object body) in c:\Projects\NEST\src\Nest\RawDispatch.generated.cs:line 34
 at Nest.ElasticClient.<Bulk>b__d6(ElasticsearchPathInfo`1 p, BulkDescriptor d) in c:\Projects\NEST\src\Nest\ElasticClient-Bulk.cs:line 20
 at Nest.ElasticClient.Dispatch[D,Q,R](D descriptor, Func`3 dispatch, Boolean allow404) in c:\Projects\NEST\src\Nest\ElasticClient.cs:line 86
 at Nest.ElasticClient.Dispatch[D,Q,R](Func`2 selector, Func`3 dispatch, Boolean allow404) in c:\Projects\NEST\src\Nest\ElasticClient.cs:line 72
 at Nest.ElasticClient.Bulk(Func`2 bulkSelector) in c:\Projects\NEST\src\Nest\ElasticClient-Bulk.cs:line 15
 at Nest.ElasticClient.IndexMany[T](IEnumerable`1 objects, String index, String type) in c:\Projects\NEST\src\Nest\ElasticClient-Index.cs:line 44
 at ElasticsearchLoad.Program.BuildBulkApi() in c:\Projects\ElasticsearchLoad\ElasticsearchLoad\Program.cs:line 258

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

通过结合使用文档和Elasticsearch配置,您可以将有效的批量大小限制在可以发送到Elasticsearch的范围内。对此没有任何“单一最佳答案”,但是通过一些测试和配置更改,您应该能够获得合适的批量索引性能阈值。这里有一些资源可以帮助你...

对于Elasticsearch的整体大小,我强烈建议阅读 - Sizing Elasticsearch - Scaling up and out

答案 1 :(得分:0)

如果您在多节点群集中运行,请确保所有节点的设置都相同。

我不确定这是否可以帮到你,但我在2节点集群中遇到了类似的问题。我正在添加同义词并仅为主机设置文件。我完全忘了把它复制到第二个节点。在创建依赖于该同义词文件的新索引时,这会导致我上面的错误。

在我添加同义词文件并重新启动第二个节点后,一切都恢复正常。