ElasticSearch / NEST:确定Mapping是否已存在

时间:2016-03-07 19:19:56

标签: c# elasticsearch mapping nest

我正在使用NEST client来访问我的ElasticSearch索引/映射。我正在尝试确定映射是否已存在,如果没有创建新映射。 IndexExistsAsync()有一种方法,但似乎没有MappingExistsAsync()方法。 GetMappingAsync()返回一个IGetMappingResponse,它有一个布尔IsValid,我认为我可能会检查,但如果映射不存在,则调用GetMappingAsync()只会引发异常。我可以检查是否抛出异常并创建映射,但是有更好的方法来处理它吗?

2 个答案:

答案 0 :(得分:1)

你不应该使用

In [138]: df.A = df.A.replace(r'([^\s])\[', r'\1 [', regex=True)

In [139]: df
Out[139]:
         A
0  One [P]
1  Two [N]

相反?

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

答案 1 :(得分:0)

我明白了。问题在于我设置了客户端以在失败时抛出异常,而不是让IsValid成为决定成功的因素。

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