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中执行类似的操作?

对代码应用一些更改,您会很好:

  1. QueryDescriptor<>更改为QueryContainerDescriptor
  2. 使用DateRange(..)而不是Range(..)
  3. OnFields(..)方法已全部更改为Fields(..)
  4. 最后,用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)); } 

希望能帮助到你。