NEST:创建别名并设置过滤器

NEST : Create Alias and set filter

我对 ES 很陌生。在探索 .Net 的 NEST 客户端时,我遇到了一种无法弄清楚如何使用 NEST.Net.

实现的情况

配置: .Net 4.6.1 巢 7.2.0

我正在尝试的是在现有索引上设置别名。我能够使用以下方法实现它。

await _client.Indices.PutAliasAsync(indexName, aliasName);

这会在索引上创建一个别名,尽管别名是空的。

现在我想实现下面的结构。

"MyIndexName" : {
    "aliases" : {
      "MyAliasName" : {
        "filter" : {
          "term" : {
            "MyFilterTerm" : "MyFilterTermValue"
          }
        }
      },
}

我使用了下面的代码片段

await _client.Indices.PutAliasAsync(indexName, aliasName,
                                a => a.Filter<MyTestClass>(
                                    f => f.Term("MyFilterTerm", "MyFilterTermValue")));

public class MyTestClass {// not sure what this was supposed to be}

但是这会产生如下 json。

"MyIndexName" : {
    "aliases" : {
      "MyAliasName" : {
        "filter" : {
          "term" : {
            "MyFilterTerm" : {
              "value" : "MyFilterTermValue"
            }
          }
        }
      },
}

如何实现第一个 JSON 格式?

filter 子句中 term 查询的两种 JSON 格式是等效的。 NEST 通常会发出较长形式的查询,对于 term query

"term" : {
    "<field>" : {
        "value" : "<value>"
    }
}

相对于短格式

"term" : {
    "<field>" : "<value>"
}