Elasticsearch Bulk Insert - Nest C#
-
Normal insert te sorun yok ama bulk insert veya indexmany methodları çalışmıyor bir türlü sebebi ne olabilir?
public async Task BulkInsertAsync(IEnumerable<TEntity> entities) { var chunks = entities.Chunk(5000); foreach (var chunk in chunks) { var bulkDescriptor = new BulkDescriptor(); foreach (var entity in chunk) { bulkDescriptor.Index<TEntity>(i => i .Index(_indexName) .Document(entity) ); } var response = await _elasticClient.BulkAsync(bulkDescriptor); if (!response.IsValid) { throw new Exception($"Bulk indexing error: {response.OriginalException.Message}"); } } //await _elasticClient.BulkAsync(x => x.Index(item.Index).UpdateMany(chunk, (y, z) => y.IdFrom(z, true).Doc(z).Id(z.Id).RetriesOnConflict(2))); }


Https tarafından 16/Ağu/24 09:44 tarihinde düzenlenmiştir -
-
throw new Exception($"Bulk indexing error: {response.OriginalException.Message}");
satırını kaldırdım hepsini ekliyor şimdi. Ama response valid dönmüyor kodda.
http.max_content_length: 2000mb
server.maxPayloadBytes: 266214400
olarak ayarladım belki ondandır. Ama response IsValid false dönüyor, hatalı bir durum yinede var gibi görünüyor.
consoleda
POST /_bulk
{"index":{"_id":"2283166e-84e9-4267-9448-69ab56a170c4","_index":"searchablenames"}}...
...
şeklinde nest ten request body şeklinde deneyince response aşağıdaki gibiydi


-
6 saatte bu kadar normal mi bu,
Yoksa daha da hızlandırılabilir mi?
100 biner olarak kaydediyorum
kendi lokal bilgisayarımda.
6-7 tane 8-10 karakterlik string alanları var modelde.

-
-
sadece bulk insert için performans lazımsa nesti ortadan kaldırıp şunu dener misin ?
static async Task Main(string[] args) { var client = new HttpClient(); var uri = new Uri("http://localhost:9200/_bulk"); // Elasticsearch'in bulk endpointi // Verilerinizi hazırlayın var bulkData = new StringBuilder(); // Örnek olarak iki doküman ekleyelim: bulkData.AppendLine("{ \"index\" : { \"_index\" : \"your-index\", \"_id\" : \"1\" } }"); bulkData.AppendLine("{ \"field1\" : \"value1\", \"field2\" : \"value2\" }"); bulkData.AppendLine("{ \"index\" : { \"_index\" : \"your-index\", \"_id\" : \"2\" } }"); bulkData.AppendLine("{ \"field1\" : \"value3\", \"field2\" : \"value4\" }"); // Elasticsearch'e gönderilecek JSON içeriği oluşturma var content = new StringContent(bulkData.ToString(), Encoding.UTF8, "application/json"); // POST isteği gönderme var response = await client.PostAsync(uri, content); // Sonucu ekrana yazdırma var responseString = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseString); }
