Эластичный поиск Осколок / Маршрутизация - PullRequest
0 голосов
/ 08 марта 2019

У меня мультитенантная система, и я пытаюсь разработать ElasticSearch для поддержки мультитенантности. Я искал в сети, но во всех найденных мной постах на практике не указано, как это сделать. Основная идея заключается в том, чтобы на каждом индексе было по 1 сегменту на клиента и использовать пользовательскую маршрутизацию для запроса выделенного фрагмента. Это понятно Теперь, как я могу это реализовать? Как можно создать несколько сегментов для каждого индекса, указав «ключевое значение» для запроса этого конкретного фрагмента в будущем? Пример кода будет полезен.

Большое спасибо.

1 Ответ

0 голосов
/ 08 марта 2019

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

Чего именно вы хотите достичь?Я предполагаю, что вы хотите, чтобы разные пользователи (или, лучше, разные роли) могли получать доступ к разным частям индекса.В этом случае вам следует взглянуть на разрешения на уровне документа .

Как этого добиться на практике?Допустим, у вас есть индекс с именем multitenants-index, и у вас есть два арендатора, таких: (i) первый арендатор может читать / писать только те документы, имеющие поле "tenant": 1, (ii) второй арендатор может читать / писатьтолько те документы, которые имеют поле "tenant": 2.Затем вы можете создать следующие две роли:

POST /_xpack/security/role/first_tenant
{
  "indices": [
    {
      "names": [ "multitenants-index" ],
      "privileges": [ "read", "write" ],
      "query": "{\"match\": {\"tenant\": 1}}"
    }
  ]
}

POST /_xpack/security/role/second_tenant
{
  "indices": [
    {
      "names": [ "multitenants-index" ],
      "privileges": [ "read", "write" ],
      "query": "{\"match\": {\"tenant\": 2}}"
    }
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...