Одной из уникальных особенностей Elasticsearch является то, что, в отличие от большинства традиционных систем или баз данных, все задачи, такие как подключение к Elasticsearch и манипулирование им, выполняются с помощью REST API, что означает, что почти каждый запрос или команда, выполняемая на вашем узле Elasticsearch, представляет собой простой HTTP-запрос к определенному URL.
В зависимости от отправленного HTTP-глагола и URL, на который он отправлен, Elasticsearch может выполнять огромное количество действий на узле или даже кластере.
Структура URL Elasticsearch REST API
На самом базовом уровне, чтобы выполнить команду в Elasticsearch, вам нужно отправить HTTP-глагол на URL вашего узла Elasticsearch. Для разработки, как правило, это localhost:9200.
В большинстве случаев самый простой метод отправки запроса к REST API Elasticsearch - это использование полезного инструмента командной строки cURL, который представляет собой простой инструмент, используемый для передачи практически любых интернет-данных.
Например, чтобы получить список всех индексов, вы можете выполнить следующую команду curl из интерпретатора командной строки вашего сервера разработки (как указано в официальной документации:
1 2 | curl 'localhost:9200/_cat/indices?v' health index pri rep docs.count docs.deleted bookstore.size pri.bookstore.size |
Здесь мы обращаемся к API cat (на что указывает ведущее подчеркивание _) и просматриваем индексы, которые показывают срез каждого индекса в кластере.
Индексы, типы, документы и свойства
Имея на руках пример, мы можем более подробно изучить специфическую структуру REST API Elasticsearch, которая чаще всего состоит из трех структурированных компонентов: индекса, типа и документа:
localhost:9200/index/type/document
Индекс - это родительская структура, которую проще всего представить как базу данных, в которой хранится множество типов. Индекс может представлять любую концепцию, но часто он представляет целую систему компонентов, например, магазин или книжный магазин.
Типы содержатся в индексе и похожи на таблицы базы данных, причем каждый тип представляет собой коллекцию похожих объектов (например, рубашку или книгу).
Наконец, документ - это единичный экземпляр или представление объекта родительского типа.
Удаление данных из Elasticsearch
После изучения базового синтаксиса REST API мы можем изучить, как выполнять конкретные действия, например, удаление данных.
Удаление одного документа
Используя наш базовый синтаксис, как показано выше, нам нужно использовать curl и отправить HTTP-глагол DELETE, используя опцию -XDELETE:
1 | curl -XDELETE 'localhost:9200/index/type/document'. |
Например, чтобы удалить документ, мы можем использовать следующую команду:
1 | curl -XDELETE 'localhost:9200/bookstore/book/1' |
Это приведет к удалению документа с идентификатором 1 из типа книги, который находится в индексе книжного магазина.
Удаление типа
Как вы уже догадались, синтаксис немного расширился, и мы можем удалить целый тип. Здесь мы удаляем тип книги:
1 | curl -XDELETE 'localhost:9200/bookstore/book' |
Удаление индекса
Наконец, если мы хотим удалить весь индекс, это можно сделать, используя тот же синтаксис, что и раньше:
1 | curl -XDELETE 'localhost:9200/bookstore' |