我正在尝试在 Nest 中搜索记录,我的条件是,expiration_date可以为空,也可以在某个日期内(例如 10-20-2018),effective_date也可以是某个日期(09-20-2018)。
以下是我的查询,这里我无法使用 || 和 && 运算符,无论是语法问题,还是我的方法错误,谁能帮我解决这个问题?
docs = await _client.SearchAsync<PriceList>(s => s.Index(config.elasticsearchIndex)
.Query(a => a.Bool(c=>c.Should(
d => d.Bool(e => e.MustNot(f=>f.Exists(g => g.Field(h => h.ExpirationDate))))
||
.Query(a => a.DateRange(r => r.Field(field => field.ExpirationDate).GreaterThanOrEquals(forThisRange.fromDate)))
)))
.Query(a => a.DateRange(r => r.Field(field => field.EffectiveDate).LessThanOrEquals(forThisRange.toDate)))
我的巢版本是6.4
更新查询:
.Query(a => a.Bool(c=>c.Should(
d => d.Bool(e => e.MustNot(f=>f.Exists(g => g.Field(h => h.ExpirationDate))))
,
d=>d.Bool(e=>e.Must(f=>f.DateRange(r => r.Field(field => field.ExpirationDate).GreaterThanOrEquals(forThisRange.fromDate))))
//i=>i.DateRange
)))
.Query(a => a.DateRange(r => r.Field(field => field.EffectiveDate).LessThanOrEquals(forThisRange.toDate)))
我没有得到任何错误,但没有得到额外的记录,它给出了正确的结果+“expiration_date”小于 10-20-2018,后者不应该。