ElasticSearch/NEST: определить, существует ли сопоставление

Я использую NEST-клиент для доступа к моим индексам / сопоставлениям ElasticSearch. Я пытаюсь определить, существует ли сопоставление, и если нет, создать новое сопоставление. Есть метод для IndexExistsAsync() но, похоже, нет MappingExistsAsync() метод. GetMappingAsync() возвращает IGetMappingResponse который имеет логическое значение IsValid, что я думал, что смогу проверить, но звоню GetMappingAsync() просто создает исключение, если сопоставление не существует. Я могу просто проверить, выбрасывается ли исключение, и создать сопоставление, но есть ли лучший способ справиться с этим?

2 ответа

Решение

Я понял. Проблема заключалась в том, что я настроил клиент на выдачу исключений при сбое вместо того, чтобы IsValid быть тем, что определяет успех.

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

Ты не должен использовать

TypeExists defined on the interface IElasticClient

Вместо?

Я имею в виду, если тип существует, отображение этого типа также существует.

Другие вопросы по тегам