ElasticSearch/NEST:判断Mapping是否已经存在

ElasticSearch/NEST: Determine if Mapping already exists

我正在使用 NEST client 访问我的 ElasticSearch indexes/mappings。我试图确定一个映射是否已经存在,如果不存在则创建一个新映射。有 IndexExistsAsync() 的方法,但似乎没有 MappingExistsAsync() 的方法。 GetMappingAsync() returns 一个 IGetMappingResponse 有一个布尔值 IsValid,我想我可以检查,但是调用 GetMappingAsync() 只会抛出一个异常如果映射不存在。我可以检查是否抛出异常并创建映射,但是有更好的处理方法吗?

我明白了。问题是我已经将客户端设置为在失败时抛出异常,而不是让 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

相反?

我的意思是,如果类型存在,则该类型的映射也存在。