Я пытаюсь реализовать запрос в ElasticSearch (Nest), в котором возвращаются только документы, соответствующие определенным ограничениям. Каждый документ будет иметь массив строк (Restrictions), и запросу также будет предоставлен массив строк (назовем это «saidRestrictions»), и цель состоит в том, чтобы извлечь (отфильтровать) только те документы, которые ТОЛЬКО имеют указанные ограниченияв поле "connectedRestrictions"
Допустим, у меня есть документы
[
{
"Id":1,
"Restrictions":["restriction1", "restriction2"]
},
{
"Id":2,
"Restrictions":["restriction1"]
},
{
"Id":3,
"Restrictions":["restriction1", "restriction2", "restriction3"]
}
]
Учитывая satisfiedRestrictions = ["restriction1", "restriction2"]
, запрос должен возвращать документы с идентификаторами 1 и 2. У документа 3 есть дополнительное ограничение ("limit3")) не указан в параметре satisfiedRestrictions
, поэтому его следует исключить из результатов.
Это можно было бы решить с помощью предложения must_not
(не должно совпадать с "restiction3"), но при этом предполагается, что всевозможные значения ограничений должны где-то храниться. Идеальное решение было бы без необходимости делать это.
Есть ли хороший способ для достижения этого или эта модель «на основе ограничений» не разрешима?