Поиск Elasticsearch по различным индексам с использованием фильтров, повышающих определенный индекс - PullRequest
0 голосов
/ 01 февраля 2019

Я использую ElasticSearch 6.5, чтобы выполнить поиск по паре индексов.Я попытаюсь объяснить сценарий: у меня мультитенантное приложение, в котором клиенты могут искать товары.Существуют общие продукты и продукты арендатора.

Я храню общие продукты в отдельном индексе A, доступном только для чтения, они составляют около 2 миллионов.У каждого арендатора также есть «свое место» в индексе B, куда он может добавлять свои собственные продукты.

Арендаторы могут копировать общий продукт в свой собственный индекс.Во время поиска мне нужно отфильтровать данные из обоих индексов (A и B), удалив дубликаты, но индекс B должен иметь приоритет над индексом A => это означает, что если продукт копируется из индекса A в B, во время поиска отображается версия B,Другими словами, B-версия продукта должна «переопределять» A-версию.

Сейчас я использую ES-фильтры (https://www.elastic.co/guide/en/elasticsearch/guide/current/_queries_and_filters.html), потому что мне не нужна оценка и мои поискиточный, и я хочу получить быстрый ответ. Фильтры также кэшируются, и это улучшает взаимодействие с пользователем в моем приложении.

Я знаю, что могу использовать дедупликацию для нескольких индексов следующим образом:

POST  http://myElastic.com/test/e1,e2,e3/_search
{
  "aggs":{
    "dedup" : {
      "terms":{
        "field": "id"
       },
       "aggs":{
         "dedup_docs":{
           "top_hits":{
             "size":1
           }
         }
       }    
    }
  }
}

Я хотел бы знать, как отдавать приоритет индексу B., продолжающему использовать фильтры вместо запросов (которые имеют оценки). Кроме того, я хотел бы знать, работают ли нумерация страниц и сортировка правильно в этом случае, когда ES должен объединять несбалансированные данные из несколькихиндексы (в индексе A у меня 2 миллиона продуктов, в индексе B часть продуктов A, которые должны их переопределять, плюс пользовательские продукты арендатора).

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