Sto cercando di sostituire i documenti su ES utilizzando NEST. Sto vedendo le seguenti opzioni disponibili.Aggiornamento cumulativo su ElasticSearch tramite NEST
Opzione # 1:
var documents = new List<dynamic>();
`var blkOperations = documents.Select(doc => new BulkIndexOperation<T>`(doc)).Cast<IBulkOperation>().ToList();
var blkRequest = new BulkRequest()
{
Refresh = true,
Index = indexName,
Type = typeName,
Consistency = Consistency.One,
Operations = blkOperations
};
var response1 = _client.Raw.BulkAsync<T>(blkRequest);
Opzione # 2:
var descriptor = new BulkDescriptor();
foreach (var eachDoc in document)
{
var doc = eachDoc;
descriptor.Index<T>(i => i
.Index(indexName)
.Type(typeName)
.Document(doc));
}
var response = await _client.Raw.BulkAsync<T>(descriptor);
Così qualcuno può dirmi che uno è migliore o qualsiasi altra opzione per fare gli aggiornamenti di massa o elimina utilizzando NEST?
Grazie, Russ Cam per il tuo commento. Ha senso che ho usato BulkDescriptor. hai qualche idea su come eseguire il rollback se uno qualsiasi degli aggiornamenti di massa fallisce? – Sasi
Vuoi dire ripristinare tutti gli aggiornamenti in un'unica richiesta? In breve, non è possibile poiché ogni aggiornamento all'interno della richiesta in blocco è indipendente da altri, vale a dire che non è transazionale. È possibile riprovare le operazioni non riuscite, se necessario, ma nessun modo integrato per eseguire il rollback di –
OK. Grazie ancora per la tua risposta. – Sasi