2014-05-22 31 views
0

我試圖索引許多文件使用Nest to Elasticsearch。事情運行良好,文件數量有限,但是當我增加數字 - 從1000到50,000時,會引發錯誤。我不相信這是由於文檔的數量 - 這可能是不好的數據。索引很多與巢和elasticsearch - 無法執行後的任何節點

雖然我試圖防範不良數據 - 我只索引有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 

任何幫助,將不勝感激!

+0

您是否試圖在一次批量操作中插入所有50,000個項目? –

+0

是的。我意識到這可能是幾分鐘前的問題。它似乎安全地處理10k,但不是50k。有沒有可以改變的設置來增加這個容量? – bigerock

回答

1

您將受到有效批量大小的限制,您可以通過組合文檔和Elasticsearch配置將其發送到Elasticsearch。對此,沒有任何「單一最佳答案」,但通過一些測試和配置更改,您應該能夠實現適當的批量索引性能閾值。這裏有一些資源,幫助你...

而對於Elasticsearch的整體漿紗我會強烈建議閱讀 - Sizing Elasticsearch - Scaling up and out

+0

我現在遇到的問題通過批量索引編制10k文件,一次只有1000個!我的環境中沒有任何變化(這是一個三節點集羣),我直接從主機索引 - 來自同一臺機器!還有什麼想法? – bigerock

0

如果您正在多節點羣集中運行,請確保您的設置對於所有節點都是相同的。

我不確定這是否可以幫到你,但是我在2節點集羣中遇到類似的問題。我添加了同義詞並僅爲主機設置了文件。我完全忘了將它複製到第二個節點。這在創建依賴於同義詞文件的新索引時導致了上述錯誤。

我添加同義詞文件並重新啓動第二個節點後,一切恢復正常。