QueryDescriptor nest 2.x的替代方法是什么
我们正在将Nest 1.0迁移到NEST 2.0,在以前的版本中,我们有这样的查询:
container = new QueryContainer(); container = new QueryDescriptor().Range(qs => qs.OnField(f => f.PublishedDate).LowerOrEquals(TimeZoneInfo.ConvertTimeToUtc(DateTime.Now))); if (!string.IsNullOrEmpty(contentType) && !contentType.ToLower().Equals("all")) { container &= new QueryDescriptor().QueryString(qs => qs.OnFields(f => f.ContentType).Query(contentType)); }
在NEST 2.0中,QueryDescriptor类不可用,我们如何在NEST 2.0中执行类似的操作?
对代码应用一些更改,您会很好:
- 将
QueryDescriptor<>
更改为QueryContainerDescriptor
- 使用
DateRange(..)
而不是Range(..)
-
OnFields(..)
方法已全部更改为Fields(..)
- 最后,用
LessThanOrEquals(..)
替换LowerOrEquals(..)
LessThanOrEquals(..)
就像是:
container = new QueryContainer(); container = new QueryContainerDescriptor().DateRange(qs => qs.Field(f => f.PublishedDate).LessThanOrEquals(TimeZoneInfo.ConvertTimeToUtc(DateTime.Now))); if (!string.IsNullOrEmpty(contentType) && !contentType.ToLower().Equals("all")) { container &= new QueryDescriptor ().QueryString(qs => qs.OnFields(f => f.ContentType).Query(contentType)); }
希望能帮助到你。