elasticsearch 替换NEST 5.5.0中过滤的,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 替换NEST 5.5.0中过滤的,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 替换NEST 5.5.0中过滤的

elasticsearch 替换NEST 5.5.0中过滤的,elasticsearch,nest,elasticsearch,Nest,我正在尝试转换此代码块,但找不到要替换的正确定义。筛选接受操作选择器。 我已升级到NEST版本5.5.0,下面是我试图使用更高版本的NEST转换为工作的代码块: UserView defaultUserView = new UserView(); SearchDescriptor<MyOrder> _searchDesc = new SearchDescriptor<MyOrder>(); _searchDesc = _

我正在尝试转换此代码块,但找不到要替换的正确定义。筛选接受操作>选择器。 我已升级到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)
以下是QueryDescriptor:

    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.GetFiltersuserView:

 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在NEST 2.x中被弃用,在NEST 5.x中被删除,这与各个主要版本中Elasticsearch的变化一致


接下来,请使用bool查询,查询时使用must子句,筛选时使用filter子句。

能否共享CommonHelper类?Hi@Md.AbdulAlim,请参阅上面的CommonHelper.GetFilters。