elasticsearch - Nest NamedFilters 需要 promise

标签 elasticsearch nest

我有简单的弹性请求:

var request4 =
                _client.Search<T>(s => s
                    .Aggregations(aggs =>
                        aggs.Filters("FacetedSearch",
                            f => f
                                .NamedFilters(g =>
                                    {
                                            var namedFilters = new NamedFiltersContainer();
                                            

                                            foreach (var facet in _facets)
                                        {
                                            namedFilters.Add(facet.Key,
                                                Query<T>.Terms(p => new Nest.TermsQuery
                                                    {Field = facet.Key, Terms = 
                                                            new[] {facet.Value}}));
                                        }

                                        return namedFilters;
                                    })

但是,编译器需要 Nest.IPromise<Nest.INamedFiltersContainer>我还没有找到任何可以构造给定类型的 Promise 的构造函数。有没有办法将 NamedFiltersContainer 转换为 prmosie ?

最佳答案

您可以使用传递给委托(delegate)的参数来组成命名过滤器

var client = new ElasticClient();

var _facets = new Dictionary<string, string>
{
    ["foo"] = "bar",
    ["baz"] = "quux"
};

var request4 = client.Search<object>(s => s
    .Aggregations(aggs =>
        aggs.Filters("FacetedSearch", f => f
            .NamedFilters(g =>
            {
                foreach (var facet in _facets)
                {
                    g.Filter(facet.Key, Query<object>.Terms(p => p
                         .Field(facet.Key)
                         .Terms(new[] { facet.Value })
                        )
                    );
                }

                return g;
            })
        )
    )
);
产量
{
  "aggs": {
    "FacetedSearch": {
      "filters": {
        "filters": {
          "foo": {
            "terms": {
              "foo": ["bar"]
            }
          },
          "baz": {
            "terms": {
              "baz": ["quux"]
            }
          }
        }
      }
    }
  }
}

关于elasticsearch - Nest NamedFilters 需要 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64754798/

相关文章:

elasticsearch - Elasticsearch -如何结合过滤和应条款?

c# - 在具有2个索引和2个别名(每个索引中有1个)的名称相同的Elasticsearch实例中,如何仅从一个索引中选择数据

c# - 从 POST 上不成功的低级别调用构建的无效 NEST 响应

c# - ElasticProperty - 索引在 Nest 中不起作用 - ElasticSearch

elasticsearch - 聚合可以在Elasticsearch中有两个键吗

c# - 使用 NEST : How to configure analyzers to find partial words? 的 Elasticsearch

elasticsearch - 如何在Kibana中更新日期显示格式?

elasticsearch - 如何阻止Nest在QueryRaw周围附加额外的查询

elasticsearch - Kubernetes 上 elasticsearch 6.3.0 的就绪性和 active 探测失败

graphql - Nest 找不到 GraphQLModule 元素