Я пытаюсь найти записи в 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, позднее не должно.