При использовании кластеров Elasticsearch сервиса CSS для запросов и управления данными разработчики традиционно полагаются на языки программирования. Однако прямое взаимодействие с HTTP API Elasticsearch часто требует сложного и подверженного ошибкам кода. Чтобы упростить разработку, CSS Elasticsearch поддерживает официальный клиент Elasticsearch Python. Библиотека клиента (elasticsearch-py) предоставляет полное инкапсулирование API Elasticsearch, позволяя разработчикам выполнять управление индексами, операции CRUD (Create, Read, Update, Delete) и поиск документов через нативные API Python. Для получения дополнительной информации см. Elasticsearch Python Client.
Установите библиотеку клиента Python на сервер, на котором выполняется код Python. Чтобы обеспечить лучшую совместимость, используйте библиотеку клиента Python той же версии, что и целевой кластер Elasticsearch.
Замените 7.10 фактической версией клиента Python.
pip install Elasticsearch==7.10
Пример кода отличается в зависимости от настроек режима безопасности целевого кластера Elasticsearch. Выберите соответствующий справочный документ в соответствии с вашим сценарием обслуживания.
Настройки режима безопасности кластера Elasticsearch | Details |
|---|---|
Non-security mode | Подключение к кластеру Non-Security Mode с помощью Elasticsearch Python Client |
Security mode + HTTP | Подключение к кластеру Security-Mode+HTTP с помощью Elasticsearch Python Client |
Security mode + HTTPS | Подключение к кластеру Security-Mode+HTTPS с помощью Elasticsearch Python Client |
Используйте Elasticsearch Python client для подключения к кластеру Elasticsearch, в котором режим безопасности отключён, и выполните запрос, существует ли индекс test.
Ниже приведён пример кода для создания экземпляра клиента с использованием информации о подключении к кластеру:
123456789101112131415161718192021222324from elasticsearch import Elasticsearchclass ElasticFactory(object):def __init__(self, host: list, port: str, username: str, password: str):self.port = portself.host = hostself.username = usernameself.password = passworddef create(self) -> Elasticsearch:addrs = []for host in self.host:addr = {'host': host, 'port': self.port}addrs.append(addr)if self.username and self.password:elasticsearch = Elasticsearch(addrs, http_auth=(self.username, self.password))else:elasticsearch = Elasticsearch(addrs)return elasticsearches = ElasticFactory(["{cluster address}"], "9200", None, None).create()print(es.indices.exists(index='test'))
Этот фрагмент кода проверяет, существует ли индекс test в кластере. Если true (индекс существует) или false (индекс не существует) возвращается, это указывает на то, что кластер подключён.
Используйте Elasticsearch Python client для подключения к кластеру Elasticsearch в режиме security-mode, использующему HTTP, и выполните запрос, существует ли индекс test.
Ниже приведён пример кода для создания экземпляра клиента с использованием информации о подключении к кластеру:
123456789101112131415161718192021222324from elasticsearch import Elasticsearchclass ElasticFactory(object):def __init__(self, host: list, port: str, username: str, password: str):self.port = portself.host = hostself.username = usernameself.password = passworddef create(self) -> Elasticsearch:addrs = []for host in self.host:addr = {'host': host, 'port': self.port}addrs.append(addr)if self.username and self.password:elasticsearch = Elasticsearch(addrs, http_auth=(self.username, self.password))else:elasticsearch = Elasticsearch(addrs)return elasticsearches = ElasticFactory(["xxx.xxx.xxx.xxx"], "9200", "username", "password").create()print(es.indices.exists(index='test'))
Параметр | Описание |
|---|---|
Хост | IP-адрес для доступа к кластеру. Если указано несколько IP-адресов, разделите их запятой (,). |
порт | Порт доступа к кластеру. Введите 9200. |
Имя пользователя | Имя пользователя для доступа к кластеру. |
пароль | Пароль пользователя. |
Этот фрагмент кода проверяет, существует ли индекс test в кластере. Если возвращается true (индекс существует) или false (индекс не существует), это указывает на то, что кластер подключён.
Используйте Elasticsearch Python client для подключения к кластеру Elasticsearch в режиме security-mode, использующему HTTPS, и проверьте, существует ли индекс test.
Ниже приведён пример кода для создания экземпляра клиента с использованием информации о подключении к кластеру:
123456789101112131415161718192021222324252627from elasticsearch import Elasticsearchimport sslclass ElasticFactory(object):def __init__(self, host: list, port: str, username: str, password: str):self.port = portself.host = hostself.username = usernameself.password = passworddef create(self) -> Elasticsearch:context = ssl._create_unverified_context()addrs = []for host in self.host:addr = {'host': host, 'port': self.port}addrs.append(addr)if self.username and self.password:elasticsearch = Elasticsearch(addrs, http_auth=(self.username, self.password), scheme="https", ssl_context=context)else:elasticsearch = Elasticsearch(addrs)return elasticsearches = ElasticFactory(["xxx.xxx.xxx.xxx"], "9200", "username", "password").create()print(es.indices.exists(index='test'))
Параметр | Описание |
|---|---|
Хост | IP-адрес для доступа к кластеру. Если указано несколько IP-адресов, разделите их запятой (,). |
порт | Порт доступа к кластеру. Введите 9200. |
имя пользователя | Имя пользователя для доступа к кластеру. |
пароль | Пароль пользователя. |
Этот фрагмент кода проверяет, существует ли индекс test в кластере. Если возвращается true (индекс существует) или false (индекс не существует), это указывает на то, что кластер подключён.