Фильтр специальных терминов индекса в поиске Elastic - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть поисковый запрос с несколькими совпадениями, который ранее ограничивал результаты поиска на основе фильтра терминов 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 'например. Я надеюсь, что это имеет смысл?

Любые указатели приветствуются.

1 Ответ

0 голосов
/ 10 сентября 2018

Я мог бы дать более конкретный ответ, если вы указали тип данных, но из того, что вы предоставили, вы должны взглянуть на Nested Query.

https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...