У меня есть поисковый запрос с несколькими совпадениями, который ранее ограничивал результаты поиска на основе фильтра терминов client_code. Это работало нормально.
Теперь мне нужно дополнительно ограничить результаты, поскольку некоторые пользователи должны иметь возможность возвращать результаты только для ограниченных идентификаторов деталей или продуктов. Идентификаторы детали / продукта могут отличаться и будут определены с помощью логики приложения.
С чем я сталкиваюсь, как показано в неработающем примере ниже, это как применять фильтры терминов для идентификаторов из каждого индекса.
GET parts,products/_search
{
"size": 20,
"query": {
"bool": {
"must": [],
"filter": [
{
"terms": {
"client_code": [
"abc"
]
}
},
{
"terms": {
"products.id": [
123,456,789
]
}
},
{
"terms": {
"parts.id": [
abc123,abc456,abc789
]
}
},
{
"multi_match": {
"query": "foo",
"fields": [
"_id",
"name",
"sku",
"title",
"barcode"
]
}
}
]
}
}
}
Конечно, я могу применить фильтр терминов следующим образом:
{
"terms": {
"id": [
123,456,abc789
]
}
}
Однако, если идентификаторы одинаковы для разных индексов, что будет иметь место в случае, когда данные поступают из автоматически увеличивающихся БД, мне нужен способ сказать: «дайте мне идентификаторы продуктов 1,2 и 3 и идентификаторы деталей 1,3 & 4 'например. Я надеюсь, что это имеет смысл?
Любые указатели приветствуются.