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

对您的代码进行少量更改,您会很好:

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

希望对您有所帮助。