J'essaie de remplacer les documents sur ES en utilisant NEST. Je vois les options suivantes sont disponibles.Mise à jour en masse sur ElasticSearch en utilisant NEST
Option 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);
Option # 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);
Alors quelqu'un peut me dire quel est le meilleur ou toute autre option pour faire des mises à jour en vrac ou en utilisant NEST supprime?
Merci Russ Cam pour votre commentaire. Il est logique que j'ai utilisé BulkDescriptor. Avez-vous une idée sur la façon de restaurer si une mise à jour en masse échoue? – Sasi
Vous voulez annuler toutes les mises à jour dans une demande groupée? En bref, vous ne pouvez pas car chaque mise à jour dans la demande en bloc est indépendante des autres, c'est-à-dire qu'elle n'est pas transactionnelle. Vous pouvez réessayer les opérations échouées si nécessaire, mais pas de manière intégrée pour annuler –
OK. merci encore pour votre réponse. – Sasi