我正在尝试转换此代码块,但找不到正确的定义来替换 .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 在各个主要版本中的更改。
继续前进,使用 bool
用 must
代替查询查询的子句和 filter
过滤器的子句。
关于elasticsearch - 在 NEST 5.5.0 中替换 .Filtered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410986/