2016-12-07 3 views
0

Я хочу читать данные из ES, но не хочу случайно записывать данные (без операций индексирования). Это всего лишь мера безопасности, поэтому кому-то еще не удалось модифицировать функции запросов, чтобы не вставлять данные.Как создать клиент только для чтения для ElasticSearch в python?

ответ

1

, когда вы говорите, что хотите клиенту только для чтения. Клиент подчеркивает, что у вас могут быть другие клиенты для одного и того же кластера в вашей системе. Затем блокирование всего индекса для чтения только блокирует его для всех клиентов. У вас должно быть задание, которое записывает/обновляет ваши данные в кластере.

Если это ваш usecase, подумайте о клиентах как пользователей elasticsearch, каждый пользователь имеет различную политику доступа к вашему кластеру.

Поиск эластичности обеспечивает shield plugin для аутентификации клиентов, а также авторизации.

В конфигурационных файлах можно создать несколько пользователей ES с различной политикой доступа.

bin/shield/esusers useradd es_admin -r admin 

Использование роли api создает роли и посвящает каждого пользователя каждой роли.

POST /_shield/role/my_admin_role 
{ 
    "cluster": ["all"], 
    "indices": [ 
    { 
     "names": [ "index1", "index2" ], 
     "privileges": ["read"]   
    } 
    ], 
    "run_as": [ "other_user" ] 
} 

вы можете также настроить nginx reverse proxy впереди эс кластера к авторизации менеджера для пользователей, если вы хотите, чтобы держаться подальше от щита.

0

Вы можете параметр индекса для «только для чтения»:

curl -XPUT localhost:9200/test/_settings -d '{ 
    "index" : { 
     "blocks" : { 
      "read_only" : true 
     } 
    } 
}' 

Все настройки индекса описаны здесь: https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html

А вот как обновить настройки индекса: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html

Это однако, это очень ограничивающая операция.

Смежные вопросы