2016-03-07 4 views
0

J'utilise le NEST client pour accéder à mes index/mappings ElasticSearch. J'essaie de déterminer si un mappage existe déjà et, sinon, créer un nouveau mappage. Il existe une méthode pour IndexExistsAsync() mais il ne semble pas y avoir une méthode MappingExistsAsync(). GetMappingAsync() renvoie un IGetMappingResponse qui a un booléen IsValid, que j'ai pensé pouvoir vérifier, mais appeler GetMappingAsync() lève juste une exception si le mappage n'existe pas. Je peux juste vérifier si une exception est levée et créer le mapping, mais y a-t-il une meilleure façon de gérer cela?ElasticSearch/NEST: Déterminer si le mappage existe déjà

Répondre

0

Je l'ai compris. Le problème était que j'avais configuré le client pour lancer des exceptions en cas d'échec au lieu de permettre au IsValid d'être ce qui détermine le succès.

var connectionPool = new SingleNodeConnectionPool(node); 
var settings = new ConnectionSettings(connectionPool) 
    .BasicAuthentication(username, password) 
    .DisableDirectStreaming() 
    .PrettyJson(); 
    //.ThrowExceptions(); <-- This line had to be commented out. 
1

vous ne devriez pas utiliser

TypeExists defined on the interface IElasticClient 

Au lieu de cela?

Je veux dire que si le type existe, le mappage de ce type existe également.