С Elasticsearch не разговаривают через специальный клиент или драйвер, как с PostgreSQL. Всё общение идёт по HTTP: запрос это метод, адрес и тело JSON, ответ это код и JSON. Разберёмся в этом языке один раз, и дальше весь раздел будет на нём.
Метод, путь, тело
Любой запрос к Elasticsearch собирается из трёх частей:
- метод HTTP:
GETчитает,PUTсоздаёт или заменяет по известному адресу,POSTсоздаёт с автоматическим адресом или запускает действие,DELETEудаляет,HEADпроверяет существование; - путь: что именно.
/dishesэто индекс,/dishes/_doc/d634документ,/dishes/_searchпоиск. Части пути с подчёркиванием,_doc,_search,_mapping,_count, это конечные точки API, действия над индексом; - тело в JSON: что именно найти или записать. У простого чтения его нет.
После пути можно добавить параметры: ?pretty попросит красиво отформатировать ответ, ?v добавит заголовки к табличным ответам _cat.
Запрос из терминала
Elasticsearch слушает порт 9200. Проще всего поднять его в Docker одним узлом:
docker run -d --name es -p 9200:9200 \
-e discovery.type=single-node \
-e xpack.security.enabled=false \
-e ES_JAVA_OPTS="-Xms1g -Xmx1g" \
elasticsearch:9.5.5
xpack.security.enabled=false выключает пароли и шифрование: так можно только на своей машине. Поиск из терминала выглядит так:
curl -X GET 'http://localhost:9200/dishes/_search?pretty' \
-H 'Content-Type: application/json' \
-d '{ "query": { "match": { "name": "пицца" } } }'
Запрос из консоли
Писать curl с кавычками неудобно, поэтому в Kibana есть консоль Dev Tools. В ней тот же запрос записывается так:
GET /dishes/_search
{
"query": { "match": { "name": "пицца" } }
}
Первая строка метод и путь, дальше тело. Адрес сервера и заголовки консоль подставляет сама. Запросов в одном окне может быть сколько угодно, между ними пустая строка. Ответ на каждый консоль подписывает строкой с методом, путём и кодом: # GET /dishes/_search 200 OK. В песочнице этого раздела всё устроено так же.
урок из курса
Урок из курса «Elasticsearch и ELK». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.