问题
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));
}
In NEST 2.0 QueryDescriptor Class is not available, How Can we perform similar action in NEST 2.0?
回答1:
Apply few changes to your code and you will be good:
- Change
QueryDescriptor<>toQueryContainerDescriptor - Use
DateRange(..)instead ofRange(..) OnFields(..)methods have been changed toFields(..)all around- Finally, replace
LowerOrEquals(..)withLessThanOrEquals(..)
Something like:
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.
来源:https://stackoverflow.com/questions/38136094/what-is-the-alternative-to-querydescriptor-nest-2-x