Elasticsearch - это комплексный инструмент, который использует Apache Lucene для обработки текстовых, числовых, структурированных и неструктурированных геопространственных данных. Elasticsearch использует простой и очень мощный REST API, который позволяет пользователям настраивать и управлять им. В сочетании с другими инструментами, такими как Kibana и Logstash, он является одним из самых популярных движков реального времени и анализа данных.
После сбора данных из таких источников, как системные журналы, метрики, данные приложений и т.д., они добавляются в Elasticsearch и индексируются, что позволяет выполнять сложные запросы к данным и создавать сводки и информативные приборные панели с помощью таких инструментов визуализации, как Kibana.
Что такое индекс Elasticsearch?
Разобравшись с тем, что такое Elasticsearch, давайте поговорим об одной из самых важных вещей в Elastic: индексе.
В Elasticsearch индекс означает коллекцию тесно связанных документов в виде данных JSON. Данные JSON соотносят ключи с соответствующими их ключам значениями.
Вот пример документа JSON:
1 2 3 4 5 6 7 | { "@timestamp": "2099-11-15T13:12:00", "message": "GET /search HTTP/1.1 200 1070000", "user": { "id": "json_doc" } } |
Индексы Elasticsearch имеют форму инвертированного индекса, который Elasticsearch ищет по полным текстам. Инвертированный индекс работает путем перечисления всех уникальных слов в любом документе Elasticsearch и точного соответствия документу, в котором это слово встречается.
Функция инвертированного индексирования, предоставляемая Elasticsearch, также обеспечивает поиск в режиме реального времени и может быть обновлена с помощью API индексирования Elasticsearch.
Как создать псевдоним индекса
Elasticsearch предоставляет свои сервисы и функциональность с помощью очень мощного REST API. Используя этот API, мы можем создать псевдоним для индекса Elasticsearch.
Что такое псевдоним индекса (Alias)?
Псевдоним индекса Elastisearch - это вторичное имя или идентификатор, который мы можем использовать для ссылки на один или несколько индексов.
После создания псевдонима индекса вы можете ссылаться на индекс или индексы в API Elasticsearch.
Примером соответствующего индекса может быть индекс, хранящий системные журналы для apache. Если вы регулярно запрашиваете журналы apache, вы можете создать псевдоним для apache_logs, а также запрашивать и обновлять этот конкретный индекс.
Чтобы создать псевдоним для определенного индекса, мы используем запрос PUT, за которым следует путь к индексу и псевдоним для создания.
В REST мы используем метод PUT для запроса переданной сущности или значения, которое должно быть сохранено в URL запроса. Проще говоря, метод HTTP PUT позволяет вам обновить информацию о ресурсе или создать новую запись, если таковой не существует.
Для этого руководства я предполагаю, что у вас установлен Elasticsearch, и у вас есть клиент API или инструмент для отправки HTTP-запросов, например, cURL.
Давайте начнем с создания простого индекса без псевдонимов и параметров.
Для простоты мы будем использовать cURL, поскольку мы предполагаем, что у вас установлен только Elasticsearch без Kibana. Однако если у вас установлена Kibana или возникают ошибки при использовании curl, рассмотрите возможность использования консоли Kibana, поскольку она лучше подходит для запросов API Elasticsearch.
1 | curl -X PUT "localhost:9200/my_index?pretty" |
Эта команда создает простой индекс, используя настройки по умолчанию, и возвращает следующее.
1 2 3 4 5 | { "acknowledged": true, "shards_acknowledged": true, "index": "my_index" } |
Теперь, когда у нас есть индекс в Elasticsearch, мы можем создать псевдоним, используя тот же PUT-запрос:
1 | PUT localhost:9200/my_index/_alias/my_alias_1 |
Мы начинаем с указания метода, в данном случае PUT, за которым следует URL индекса, к которому мы хотим добавить псевдоним. Далее указывается API, который мы хотим использовать, в данном случае Index Alias API (_alias), а затем имя псевдонима, который мы хотим присвоить индексу.
Вот команда cURL для этого:
1 | curl -X PUT "localhost:9200/my_index/_alias/my_alias_1?pretty" |
Эта команда должна ответить со статусом 200 OK и "acknowledged":
1 2 3 | { "acknowledged": true } |
Вы также можете встретить метод добавления псевдонима к индексу как:
1 2 3 4 5 6 | curl -X POST "localhost:9200/_aliases?pretty" -H 'Content-Type: application/json' -d' { "actions" : [ { "add" : { "index" : "my_index", "alias" : "my_alias_1" } } ] } |
Используя Elasticsearch index alias API, вы можете добавлять, обновлять и удалять индексные псевдонимы по своему усмотрению.
Как получить информацию о псевдониме индекса
Когда вы создаете сложные псевдонимы, например, отфильтрованные для определенного пользователя, вы можете захотеть получить информацию об индексе. Вы можете просмотреть информацию с помощью метода GET следующим образом:
1 | GET /my_index/_alias/my_alias_1 |
Вот команда cURL:
1 | curl -X GET "localhost:9200/my_index/_alias/my_alias_1?pretty" |
Эта команда отобразит информацию о псевдониме. Поскольку мы не добавили никакой информации, обычно она будет выглядеть следующим образом.
1 2 3 4 5 6 7 | { "my_index": { "aliases": { "my_alias_1": {} } } } |
Убедитесь, что псевдоним существует, чтобы избежать ошибки 404, как показано ниже:
1 | curl -X GET "localhost:9200/my_index/_alias/does_not_exist?pretty" |
Результатом будет "псевдоним не существует или отсутствует" как:
1 2 3 4 | { "error": "alias [does_not_exist] missing", "status": 404 } |
Как удалить псевдоним из индекса
Чтобы удалить существующий псевдоним из индекса, мы используем метод, который мы использовали для добавления псевдонима, но с запросом DELETE. Например:
1 | DELETE localhost:9200/my_index/_alias/my_alias_1 |
Эквивалентная команда cURL выглядит следующим образом:
1 | curl -X DELETE "localhost:9200/my_index /_alias/my_alias_1?pretty" |
Elasticsearch должен ответить 200 OK и подтвердить: true
1 2 3 | { "acknowledged": true } |
Существуют и другие способы обновления и удаления псевдонимов из индекса в Elasticsearch. Однако для простоты мы остановились на одном запросе.
Заключение
В этом простом руководстве мы рассмотрели создание индекса Elasticsearch, а затем псевдонима. Мы также рассмотрели, как удалить псевдоним. Стоит отметить, что это руководство не является самым полным в мире; его цель - служить начальным руководством по созданию Elasticsearch, а не всеобъемлющим руководством.