Я использую Nest для запроса Elasticsearch, и я написал этот запрос для своего поиска:
var searchResponse = _elasticClient.Search<AdDocument>(s => s
.Query(q => q
.Bool(b => b
.Must(m => m
.MultiMatch(mm => mm
.Fields(f => f.Field(p => p.Title, 1.5).Field(p => p.Description))
.Query("MyKeyword")
.Fuzziness(Fuzziness.Auto)
)
)
.Filter(fi => fi
.Bool(fb => fb
.Must(m => m.Range(r => r.Field(f => f.NoOfBedrooms == 3)),
m => m.Range(r => r.Field(f => f.NoOfBathrooms == 2)),
m => m.Range(r => r.Field(f => f.Price > 2000))
)
)
)
)
)
);
Чего я хочу добиться, так это построить этот запрос динамически, в зависимости от переданных фильтров. Как я могу написать этот запрос, используя Инициализатор объекта?
Например, я хочу создать эти три фильтра диапазона вне запроса и поместить их в 3 объекта, скажем, rangeFilter1
, rangeFilter2
и rangeFilter3
, а затем внутри запроса использовать логическое И (&&), чтобы объединить их.