Я строю серию фильтров динамически, используя синтаксис перегрузки операторов.
MainQuery &= QueryContainer1;
MainQuery &= QueryContainer2;
etc.
Некоторые из фильтров не являются обязательными, поэтому я хочу, чтобы они только усиливали результаты, если они найдены. Я по сути хочу это:
bool
|___must
| |___term
| |___term
|
|___filter
| |___term
|
|___should
|___term
|___term
Кажется, нет способа достичь этого с помощью перегрузки синтаксиса. Здесь, в документации, говорится, что это не приведет к вышеуказанному результату, потому что он ожидает, что хотя бы один из «Должных условий» будет соответствовать.
MustTerm1 && Filter1 && (ShouldTerm1 || ShouldTerm2)
Документация:
https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/bool-queries.html#_combining_queries_with_or_should_clauses
Что я на самом деле хочу сделать, так это:
MustTerm1 && Filter1 && (optionally)ShouldTerm1 && (optionally)ShouldTerm2
Или, если это невозможно сделать в этом синтаксисе, есть ли другой способ добавить фильтры "Следует" в мой Querycontainer во время его создания?