什么是 QueryDescriptor nest 2.x 的替代品
What is the alternative to QueryDescriptor nest 2.x
我们正在将我们的 Nest 1.0 迁移到 NEST 2.0,在以前的版本中我们有这样的查询:
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 Class 不可用,我们如何在 NEST 2.0 中执行类似的操作?
对您的代码进行少量更改,您会很好:
- 将
QueryDescriptor<>
更改为QueryContainerDescriptor
- 使用
DateRange(..)
代替Range(..)
OnFields(..)
方法已全部更改为 Fields(..)
- 最后,将
LowerOrEquals(..)
替换为LessThanOrEquals(..)
类似于:
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));
}
希望对您有所帮助。
我们正在将我们的 Nest 1.0 迁移到 NEST 2.0,在以前的版本中我们有这样的查询:
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 Class 不可用,我们如何在 NEST 2.0 中执行类似的操作?
对您的代码进行少量更改,您会很好:
- 将
QueryDescriptor<>
更改为QueryContainerDescriptor
- 使用
DateRange(..)
代替Range(..)
OnFields(..)
方法已全部更改为Fields(..)
- 最后,将
LowerOrEquals(..)
替换为LessThanOrEquals(..)
类似于:
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));
}
希望对您有所帮助。