elasticsearch - 在 NEST 5.5.0 中替换 .Filtered

标签 elasticsearch nest

我正在尝试转换此代码块,但找不到正确的定义来替换 .Filtered 接受 Action < FilteredQueryDescriptor< T >> 选择器。
我已升级到 NEST 版本 5.5.0,这是我尝试使用更高版本的 NEST 转换为工作的代码块:

        UserView defaultUserView = new UserView();

        SearchDescriptor<MyOrder> _searchDesc = new SearchDescriptor<MyOrder>();

        _searchDesc = _searchDesc                    
                .Index(MyIndex)
                .Type(MyType)
                .Query(mq => mq.Filtered(QueryDescriptor(defaultView)))
                .SearchType(SearchType.Count)

这是查询描述符:
    private Func<SearchDescriptor<MyOrder>, SearchDescriptor<MyOrder>> QueryDescriptor(UserView userView)
    {
        Func<SearchDescriptor<MyOrder>, SearchDescriptor<MyOrder>> result;

        result = delegate(SearchDescriptor<MyOrder> descriptor)
        {
            descriptor.Query
            (
                query => query.MatchAll()
            )
            .Query(f => f.Bool(CommonHelper.GetFilters(userView)));
            return descriptor;
        };

        return result;
    }

编辑:这是 CommonHelper.GetFilters(userView):
 public static class CommonHelper
 {
    public static Func<BoolQueryDescriptor<MyOrder>, BoolQueryDescriptor<MyOrder>> GetFilters(UserView userView)
    {
       Func<BoolQueryDescriptor<MyOrder>, BoolQueryDescriptor<MyOrder>> 
       result= delegate (BoolQueryDescriptor<MyOrder> descriptor)
         { 
             switch (userView.UserView)
             {
                  case UserView.1:
                       descriptor.Must(OldDefaultFilter());
                       break;
                  case UserView.2:
                       descriptor.Must(OldDefaultFilter())
                              .MustNot(MustNotDefaultFilter());
                       break;
             }
             return descriptor;
          };
        return result;

}
}

最佳答案

FilteredQueryDescriptor<T>在 NEST 2.x 中已弃用并在 NEST 5.x 中删除,以符合 Elasticsearch 在各个主要版本中的更改。

继续前进,使用 boolmust 代替查询查询的子句和 filter过滤器的子句。

关于elasticsearch - 在 NEST 5.5.0 中替换 .Filtered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410986/

相关文章:

elasticsearch - 添加具有与映射中指定值不同类型的值的字段

elasticsearch - ElasticSearch中的路径层次结构标记器无法正常工作

python - 如何在 PyES 中使用 ResultSet

c# - 对 C# Nest 的简单匹配查询

c# - ElasticSearch(C#Nest)中的多个最大/最小聚合

elasticsearch ttl vs 每日丢弃表

elasticsearch - 如何在Elasticsearch中查询后区分值

elasticsearch - NEST 中的地理距离范围过滤器?

c# - 通过Nest中的SearchRequest类设置索引名称

c# - ElasticSearch 索引通过 REST API 工作,但不是 C# 代码