QueryDescriptor nest 2.x的替代方法是什么

Sau*_*ank 3 c# elasticsearch nest

我们正在将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));
                    }
Run Code Online (Sandbox Code Playgroud)

在NEST 2.0中,QueryDescriptor类不可用,我们如何在NEST 2.0中执行类似的操作?

Rob*_*Rob 10

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

  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));
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.