Elasticsearch — это бесплатная высокодоступная поисковая и аналитическая система с открытым исходным кодом, созданная на основе проекта Apache Lucene. Elasticsearch хранит свои данные в формате JSON, что делает его очень простым в использовании.
Он предоставляет простой и мощный REST API для выполнения набора задач, включая создание документов, мониторинг состояния кластера и многое другое.
Python — один из самых популярных языков программирования, и он очень хорошо дополняет Elasticsearch.
В этом руководстве мы рассмотрим, как использовать клиент Elasticsearch Python для взаимодействия с кластером Elasticsearch.
Настройка среды
Перед подключением клиента Elasticsearch Python необходимо убедиться, что у нас настроена среда.
Шаг 1. Установка Elasticsearch
Первым шагом является установка и настройка кластера Elastisearch в нашей системе. В этом руководстве мы будем использовать сервер Ubuntu.
Начните с обновления ваших репозиториев:
sudo apt-get install update
Импортируйте ключ PGP Elasticsearch.
wget -qO — https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add —
Установите необходимый пакет apt-transport-https:
sudo apt-get install apt-transport-https
Сохраните репозиторий.
echo «deb https://artifacts.elastic.co/packages/7.x/apt stable main» | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
Обновите и установите Elasticsearch
sudo apt update
sudo apt install elasticsearch
Включите и запустите службу:
sudo /bin/systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
После того, как служба запущена и работает, выполните curl для конечной точки Elasticsearch:
curl http://localhost:9200
Если служба запущена, вы должны увидеть результат, как показано ниже:
{
«name» : «ubuntu2004»,
«cluster_name» : «elasticsearch»,
«cluster_uuid» : «lUk9qSQtSaSfZXMsyxQdyg»,
«version» : {
«number» : «7.15.0»,
«build_flavor» : «default»,
«build_type» : «deb»,
«build_hash» : «79d65f6e357953a5b3cbcc5e2c7c21073d89aa29»,
«build_date» : «2021-09-16T03:05:29.143308416Z»,
«build_snapshot» : false,
«lucene_version» : «8.9.0»,
«minimum_wire_compatibility_version» : «6.8.0»,
«minimum_index_compatibility_version» : «6.0.0-beta1»
},
«tagline» : «You Know, for Search»
}
Шаг 2: установка Python
Следующим шагом будет установка Python. В Ubuntu / Debian откройте терминал и введите команду ниже, чтобы подтвердить установленную версию python:
python —version
Если у вас установлен Python 3, вы должны увидеть результат, аналогичный показанному ниже:
Python 3.10.0
Если нет, установите Python 3 с помощью команды:
sudo apt-get install python3.10
Шаг 3. Установка клиента Elasticsearch.
Последний шаг — установка клиента Elasticsearch. Мы можем сделать это с помощью утилиты pip как:
Начните с установки pip как:
sudo apt-get install python3-pip
Наконец, установите клиент Elasticsearch как:
pip3 install elasticsearch
Подключение клиента Elasticsearch
После того, как наша среда настроена и настроена, мы можем взаимодействовать с elastic с помощью клиента Elasticsearch.
Начните с создания файла Python.
touch elastic.py
vim elastic.py
Убедитесь, что кластер запущен и работает
Перед взаимодействием с кластером Elasticsearch убедитесь, что служба запущена и работает с помощью модуля запросов.
import requests
substring = «You Know, for Search».encode()
response = requests.get(«http://127.0.0.1:9200»)
if substring in response.content:
print(«Elasticsearch is up and running!»)
else:
print(«Something went wrong, ensure the cluster is up!»)
Сохраните и запустите файл как:
python elastic.py
Выход:
Elasticsearch запущен и работает!
Подключитесь к кластеру Elasticsearch
Для подключения к кластеру Elasticsearch мы можем реализовать следующий простой скрипт:
import requests
from elasticsearch import Elasticsearch
substring = «You Know, for Search».encode()
response = requests.get(«http://127.0.0.1:9200»)
if substring in response.content:
es = Elasticsearch([{«host»: «localhost», «port»: 9200}])
Получить документ с Python
Чтобы получить документ с помощью клиента Python, вы можете:
res = es.get(index=«index-name», id=1)
print(res[‘_source’])
Приведенный выше пример должен возвращать сведения о запрошенном документе.
Индексирование документа
Чтобы проиндексировать документ, используйте код:
from datetime import datetime
from elasticsearch import Elasticsearch
es = Elasticsearch([{«host»: «localhost», «port»: 9200}])
doc = {
«author»: «document-author»,
«text»: «A text document»,
«timestamp»: datetime.now()
}
res = es.index(index=«sample-index», id=2, body=doc)
print(res[‘result’])
Удаление документа
Чтобы удалить документ:
res = es.delete(index=«index-name», id=1)
Заключение
В этом руководстве обсуждается, как настроить и использовать Elasticsearch с Python с помощью клиента Python Elasticseach.