本文介绍了什么是替代QueryDescriptor巢2.X的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们正在我们的鸟巢1.0迁移到NEST 2.0,在以前的版本中,我们是具有这样的查询:
We are migrating our Nest 1.0 to NEST 2.0, In previous version we were having a query like this:
container = new QueryContainer();
container = new QueryDescriptor<BaseModel>().Range(qs => qs.OnField(f => f.PublishedDate).LowerOrEquals(TimeZoneInfo.ConvertTimeToUtc(DateTime.Now)));
if (!string.IsNullOrEmpty(contentType) && !contentType.ToLower().Equals("all"))
{
container &= new QueryDescriptor<BaseModel>().QueryString(qs => qs.OnFields(f => f.ContentType).Query(contentType));
}
在NEST 2.0 QueryDescriptor类不可用,我们如何能够执行类似行动NEST 2.0
In NEST 2.0 QueryDescriptor Class is not available, How Can we perform similar action in NEST 2.0?
推荐答案
应用一些改变你的代码,你会好?
Apply few changes to your code and you will be good:
- 更改
QueryDescriptor<>
到QueryContainerDescriptor
- 使用
DATERANGE(..)
而不是范围(..)
-
OnFields(..)
方法已经被更改为字段(..)
各地 - 最后,替换
LowerOrEquals(..)
与LessThanOrEquals(..)
- Change
QueryDescriptor<>
toQueryContainerDescriptor
- Use
DateRange(..)
instead ofRange(..)
OnFields(..)
methods have been changed toFields(..)
all around- Finally, replace
LowerOrEquals(..)
withLessThanOrEquals(..)
是这样的:
container = new QueryContainer();
container = new QueryContainerDescriptor<BaseModel>().DateRange(qs => qs.Field(f => f.PublishedDate).LessThanOrEquals(TimeZoneInfo.ConvertTimeToUtc(DateTime.Now)));
if (!string.IsNullOrEmpty(contentType) && !contentType.ToLower().Equals("all"))
{
container &= new QueryDescriptor<BaseModel>().QueryString(qs => qs.OnFields(f => f.ContentType).Query(contentType));
}
希望它帮助。
Hope it helps.
这篇关于什么是替代QueryDescriptor巢2.X的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!