首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NEST 5.5.0中.Filtered的替换

NEST 5.5.0中.Filtered的替换
EN

Stack Overflow用户
提问于 2017-11-21 10:37:52
回答 1查看 80关注 0票数 0

我试图转换这段代码,但找不到正确的定义来替换.Filtered replace < FilteredQueryDescriptor< T >>选择器。我已经升级到NEST版本5.5.0,下面是我试图使用NEST的更高版本转换为工作的代码块:

代码语言:javascript
复制
        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)

这里是QueryDescriptor:

代码语言:javascript
复制
    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):

代码语言:javascript
复制
 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;

}}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-23 01:50:39

FilteredQueryDescriptor<T>在NEST 2.x中被废弃,在NEST 5.x中被删除,这与各自主要版本中Elasticsearch中的更改一致。

接下来,使用bool查询而不是用于查询的must子句和过滤器的filter子句。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47410986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档