Облачная платформаAdvanced

Доступ к кластеру Elasticsearch с использованием Python

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Вы можете получить доступ к кластеру Elasticsearch, созданному в CSS, с помощью Python.

Предварительные требования

  • Кластер CSS доступен.
  • Убедитесь, что сервер, на котором запущен Python, может взаимодействовать с кластером CSS.

Доступ к кластеру

  1. Установите Elasticsearch Python client. Рекомендуется использовать версию клиента, соответствующую версии Elasticsearch. Например, если версия кластера 7.6.2, установите Elasticsearch Python client 7.6.
    1pip install Elasticsearch==7.6
  2. Создайте Elasticsearch client и проверьте, test index существует. Примеры кластеров в разных режимах безопасности приведены ниже:
    • Кластер в режиме без безопасности
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24из elasticsearch импорт Elasticsearch
      класс ElasticFactory(объект):
      def __init__(self, Хост: list, порт: str, username: str, пароль: строка):
      self.порт = порт
      self.хост = хост
      self.имя пользователя = имя пользователя
      self.пароль = пароль
      def создать(self) -> Elasticsearch:
      addrs = []
      for host in self.host:
      addr = {'host': host, 'port': self.порт}
      адреса.добавить(адрес)
      если self.имя_пользователя и self.пароль:
      elasticsearch = Elasticsearch(адреса, http_auth=(self.username, self.password))
      else:
      elasticsearch = Elasticsearch(addrs)
      return elasticsearch
      es = ElasticFactory(["xxx.xxx.xxx.xxx"], "9200", Нет, Нет).create()
      print(es.indices.exists(index='test'))
    • Кластер в режиме безопасности + HTTP
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24из elasticsearch импорт Elasticsearch
      класс ElasticFactory(object):
      def __init__(self, host: list, port: str, username: str, password: str):
      self.порт = порт
      self.Хост = Хост
      self.имя пользователя = имя пользователя
      self.пароль = пароль
      def создать(self) -> Elasticsearch:
      addrs = []
      for host in self.host:
      addr = {'host': host, 'port': self.port}
      addrs.append(addr)
      если self.имя пользователя и self.пароль:
      elasticsearch = Elasticsearch(addrs, http_auth=(self.имя пользователя, self.пароль))
      else:
      elasticsearch = Elasticsearch(addrs)
      return elasticsearch
      es = ElasticFactory(["xxx.xxx.xxx.xxx"], "9200", "username", "password").создать()
      печать(es.индексы.существует(индекс='test'))
    • Кластер в режиме безопасности + HTTPS
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27из elasticsearch импорт Elasticsearch
      импорт ssl
      класс ElasticFactory(объект):
      def __init__(self, хост: список, порт: str, имя_пользователя: str, пароль: str):
      self.порт = порт
      self.хост = хост
      self.имя пользователя = имя пользователя
      self.пароль = пароль
      def создать(self) -> Elasticsearch:
      контекст = ssl._create_unverified_context()
      addrs = []
      for host in self.host:
      addr = {'host': host, 'port': self.порт}
      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 elasticsearch
      es = ElasticFactory(["xxx.xxx.xxx.xxx"], "9200", "username", "password").create()
      print(es.indices.exists(index='test'))
    Таблица 1 Переменные

    Параметр

    Описание

    хост

    IP адрес для доступа к кластеру Elasticsearch. Если несколько IP‑адресов, разделите их запятыми (,).

    порт

    Порт доступа к кластеру Elasticsearch. Введите 9200.

    имя пользователя

    Имя пользователя для доступа к кластеру.

    пароль

    Пароль пользователя.

  3. Создайте индекс кластера через клиент Elasticsearch.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12отображения = {
    "settings": {
    "index": {
    "number_of_shards": number_of_shards,
    "number_of_replicas": 1,
    },
    },
    "mappings": {
    свойства
    }
    }
    результат = es.индексы.создать(индекс=индекс, тело=отображения)
  4. Запросите индекс, созданный на предыдущем шаге, через клиент Elasticsearch.
    1
    2
    3
    4
    5
    6
    7
    8тело = {
    "query": {
    "match": {
    "Поле запроса": "Содержимое запроса"
    }
    }
    }
    результат = es.поиск(индекс=индекс, тело=тело)