【问题标题】:Replacement for .Filtered in NEST 5.5.0在 NEST 5.5.0 中替换 .Filtered
【发布时间】:2017-11-23 09:50:39
【问题描述】:

我正在尝试转换此代码块,但找不到正确的定义来替换 .Filtered 接受 Action > 选择器。 我已经升级到 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;

} }

【问题讨论】:

  • 您能分享一下您的 CommonHelper 课程吗?
  • 嗨@Md.AbdulAlim,请参阅上面的CommonHelper.GetFilters。

标签: elasticsearch nest


【解决方案1】:

FilteredQueryDescriptor&lt;T&gt; 在 NEST 2.x 中被弃用,并在 NEST 5.x 中被移除,这与 Elasticsearch 在各个主要版本中的变化保持一致。

接下来,使用bool 查询代替must 子句用于查询和filter 子句用于过滤器。

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多