В современном быстро развивающемся цифровом ландшафте Elasticsearch 8.0 выступает в качестве мощного инструмента для управления и анализа огромных объемов данных. Его значение в различных областях, от анализа данных до поисковой оптимизации, трудно переоценить.
Elasticsearch 8.x предлагает набор функций, которые расширяют его функциональность:
- Повышенная безопасность: Улучшенные настройки безопасности, обеспечивающие защиту данных.
- Масштабируемость: Легко масштабируется для работы с петабайтами структурированных и неструктурированных данных.
- Скорость: Обеспечивает поиск и аналитику в режиме реального времени.
- Гибкость: Поддержка широкого спектра типов и структур данных.
- Улучшенная наблюдаемость: Позволяет получить подробную информацию о состоянии и производительности ваших кластеров.
- Интеграция машинного обучения: Обеспечивает расширенную аналитику и обнаружение аномалий.
Переходя к процессу установки, важно понимать, что мощные функции Elasticsearch 8.0 требуют систематического подхода, чтобы обеспечить беспроблемную настройку на Ubuntu 22.04 или 20.04. В следующих разделах вы пройдете все этапы, начиная с подготовки системы и заканчивая настройкой Elasticsearch для оптимальной производительности.
Импорт репозитория Elasticsearch 8 APT на Ubuntu 22.04 или 20.04
Обновление системных пакетов Ubuntu
Начните с обновления системных пакетов Ubuntu, чтобы убедиться, что все компоненты актуальны. Выполните команду:
sudo apt update && sudo apt upgrade
Эта команда обновляет списки пакетов и обновляет пакеты до последних версий, поддерживая стабильность и безопасность системы.
Установка начальных пакетов для установки Elasticsearch 8.0
Чтобы подготовиться к установке Elasticsearch 8.0, необходимо установить некоторые пакеты. Установите эти необходимые пакеты с помощью команды:
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https lsb_release curl -y
Этот шаг очень важен, поскольку он устанавливает такие утилиты, как dirmngr и ca-certificates для управления связками ключей, software-properties-common для работы с репозиториями программного обеспечения, apt-transport-https для безопасной загрузки пакетов, lsb_release для получения информации о Linux Standard Base, а также curl для передачи данных.
Импорт репозитория Elasticsearch 8 APT
Поскольку Elasticsearch 8.0 недоступен в стандартном репозитории Ubuntu, необходимо импортировать его из репозитория Elasticsearch APT.
Добавьте GPG-ключ Elasticsearch
Начните с импорта GPG-ключа для обеспечения целостности и подлинности пакетов. Выполните:
wget -q https://artifacts.elastic.co/GPG-KEY-elasticsearch -O- | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
Эта команда загружает GPG-ключ с официального сайта Elasticsearch и добавляет его в связку ключей вашей системы, защищая будущие загрузки из репозитория.
Добавление репозитория Elasticsearch 8.x APT
После добавления GPG-ключа импортируйте репозиторий Elasticsearch с помощью команды:
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
Эта команда создаёт новый файл списка источников для Elasticsearch, гарантируя, что ваша система распознает и будет доверять новому репозиторию для последующих шагов установки.
Установка Elasticsearch 8 на Debian 12, 11 или 10
Обновление индексного кэша APT после импорта Elasticsearch 8
Обновить список репозиториев
После импорта Elasticsearch 8 следующим шагом будет обновление списка пакетов вашей системы. Это позволит убедиться, что вновь добавленный репозиторий Elasticsearch распознан вашей системой. Выполните команду:
sudo apt update
Эта команда обновляет индексный кэш APT, позволяя установить последнюю версию Elasticsearch, доступную в репозитории.
Установите Elasticsearch
После обновления списка репозиториев перейдите к установке Elasticsearch, выполнив команду:
sudo apt install elasticsearch
Эта команда загружает и устанавливает Elasticsearch на вашу систему Debian. Она гарантирует, что у вас есть последняя стабильная версия Elasticsearch, что очень важно для поддержания оптимальной производительности и безопасности.
Настройка и запуск службы Elasticsearch
Включение и запуск службы
По умолчанию Elasticsearch не запускается автоматически при загрузке системы. Чтобы настроить Elasticsearch на запуск при загрузке и немедленный запуск службы, используйте:
sudo systemctl enable elasticsearch.service --now
Флаг —now в команде systemctl — это удобный способ как включить службу при загрузке, так и запустить ее в текущем сеансе.
Проверка состояния службы
Чтобы убедиться, что Elasticsearch работает правильно, проверьте его состояние с помощью команды systemctl:
systemctl status elasticsearch
Эта команда предоставляет информацию о состоянии службы Elasticsearch в режиме реального времени, гарантируя, что она активна и правильно функционирует в вашей системе Ubuntu.
Настройка Elasticsearch 8 на Ubuntu 22.04 или 20.04
Понимание директорий данных и конфигурации Elasticsearch
Каталог данных по умолчанию
Для хранения данных Elasticsearch использует каталог /var/lib/elasticsearch. В этом каталоге хранятся проиндексированные данные и управляется состояние кластера.
Расположение файлов конфигурации
Файлы конфигурации находятся в каталоге /etc/elasticsearch. Здесь вы управляете поведением Elasticsearch. Параметры запуска Java задаются в /etc/default/elasticsearch.
Конфигурации по умолчанию хорошо подходят для работы с одним сервером. Для кластеров изменения позволяют устанавливать удаленные соединения.
sudo nano /etc/elasticsearch/elasticsearch.yml
Настройка удаленного доступа (опционально)
Настройка сети в Elasticsearch
Настройте сетевые параметры в файле конфигурации, чтобы разрешить соединения за пределами localhost.
Откройте файл конфигурации с помощью:
sudo nano /etc/elasticsearch/elasticsearch.yml
В разделе Network (Сеть) отмените соответствующую строку для сетевой привязки и установите желаемый IP-адрес.
Общие примеры конфигурации
Настройка сетевого узла
Чтобы настроить внутренний частный IP-адрес:
network.host: [Internal Private IP]
Эта настройка необходима для связи между кластерами.
Настройка имени кластера
Определите имя кластера для идентификации:
cluster.name: my-cluster
Это имя помогает в управлении и мониторинге кластера.
Идентификация узла
Задайте уникальное имя для каждого узла:
node.name: node-1
Уникальные имена узлов упрощают управление кластером.
Настройки обнаружения
Настройте обнаружение узлов для формирования кластера:
discovery.seed_hosts: ["host1", "host2"]
Эти параметры необходимы для того, чтобы узлы могли обнаруживать друг друга в кластере.
Распределение памяти
Выделите память для Elasticsearch:
-Xms1g
-Xmx1g
Эти настройки в файле /etc/default/elasticsearch контролируют размер кучи JVM, что очень важно для производительности.
Включение CORS
Для веб-инструментов Elasticsearch:
http.cors.enabled: true
http.cors.allow-origin: "/.*/"
Настройки CORS в elasticsearch.yml позволяют взаимодействовать с веб-приложениями.
После внесения изменений сохраните и выйдите из редактора. Затем перезапустите Elasticsearch, чтобы применить новые конфигурации:
sudo systemctl restart elasticsearch
Перезапуск гарантирует, что Elasticsearch будет работать с обновленными настройками.
Настройка UFW Firewall для Elasticsearch 8 на Ubuntu 22.04 или 20.04
Настройка правил брандмауэра для Elasticsearch
Разрешение определенных IP-адресов
Чтобы разрешить удаленные подключения к Elasticsearch, необходимо настроить брандмауэр так, чтобы он разрешал эти конкретные подключения. Используйте эту команду, чтобы разрешить отдельный IP-адрес:
sudo ufw allow from [IP Address] to any port 9200
Замените [IP Address] на нужный внешний IP-адрес. Эта настройка позволяет трафику с этого адреса получать доступ к Elasticsearch через порт 9200, что очень важно для удаленного доступа или взаимодействия кластера.
Разрешение диапазона IP-адресов
Если вам нужно разрешить диапазон IP-адресов, измените правило UFW соответствующим образом:
sudo ufw allow from [IP Address Range] to any port 9200
Здесь [Диапазон IP-адресов] может быть подсетью, что позволяет нескольким IP-адресам в этой подсети получить доступ к вашему экземпляру Elasticsearch.
Разрешение всего трафика на порт 9200
В некоторых средах вам может потребоваться разрешить весь трафик на порт Elasticsearch. Будьте осторожны с этой командой, так как она открывает порт 9200 для всего входящего трафика:
sudo ufw allow 9200
Эта команда обычно используется в контролируемых средах или для первоначальной настройки и тестирования.
Ограничение доступа к локальной сети
Для обеспечения дополнительной безопасности, особенно в производственных средах, ограничьте доступ к локальной сети. Эта команда позволяет подключаться к Elasticsearch только по локальной сети:
sudo ufw allow from 192.168.1.0/24 to any port 9200
Установите значение 192.168.1.0/24 в соответствии с диапазоном IP-адресов вашей локальной сети. Эта настройка гарантирует, что только устройства в вашей локальной сети могут получить доступ к Elasticsearch, добавляя уровень безопасности против внешних угроз.
Применение правил брандмауэра
После настройки правил активируйте их, перезагрузив UFW:
sudo ufw reload
Эта команда вводит новые правила, не прерывая текущие соединения. Это очень важный шаг для обеспечения защиты сервера Elasticsearch и разрешения необходимого трафика.
Примеры команд с Elasticsearch 8 на Ubuntu 22.04 или 20.04
Удаление индекса в Elasticsearch
Чтобы удалить индекс, например ‘samples’, выполните команду:
curl -X DELETE 'http://localhost:9200/samples'
Эта команда удаляет указанный индекс и все его данные, освобождая ресурсы.
Просмотр всех индексов
Чтобы просмотреть все индексы на сервере Elasticsearch, выполните следующие действия:
curl -X GET 'http://localhost:9200/_cat/indices?v'
Эта команда предоставляет обзор всех индексов, включая их состояние и количество документов.
Вывод списка всех документов в индексе
Чтобы вывести список всех документов в индексе, например ‘sample’:
curl -X GET 'http://localhost:9200/sample/_search'
Эта команда позволяет быстро просмотреть содержимое индекса и отображает все сохраненные документы.
Запрос с параметрами URL
Для целенаправленного поиска используйте синтаксис запросов Lucene. Например, чтобы найти ‘Harvard’ в поле ‘school’:
curl -X GET http://localhost:9200/samples/_search?q=school:Harvard
Этот метод эффективен для простых запросов непосредственно через URL.
Запрос с помощью JSON (Elasticsearch Query DSL)
Для сложных запросов формат JSON более удобен для чтения и управления:
curl -XGET --header 'Content-Type: application/json' http://localhost:9200/samples/_search -d '{
"query" : {
"match" : { "school": "Harvard" }
}
}'
Этот формат позволяет создавать сложные структуры запросов, что делает его идеальным для расширенного поиска.
Сопоставление индексов списков
Для понимания структуры индекса, например ‘samples’:
curl -X GET http://localhost:9200/samples
Эта команда показывает поля и их типы в индексе, что помогает при составлении запроса.
Добавление данных в индекс
Чтобы вставить данные в индекс, выполните следующие действия:
curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/1 -d '{
"school" : "Harvard"
}'
Эта команда добавляет документ в индекс ‘samples’, полезный для ввода данных.
Обновление документа
Чтобы обновить существующий документ:
curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2 -d '
{
"school": "Clemson"
}'
curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2/_update -d '{
"doc" : {
"students": 50000}
}'
Эти команды сначала создают, а затем обновляют документ в индексе ‘samples’, демонстрируя, как изменять данные.
Резервное копирование индекса
Чтобы создать резервную копию индекса:
curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/_reindex -d '{
"source": {
"index": "samples"
},
"dest": {
"index": "samples_backup"
}
}'
Эта команда дублирует индекс ‘samples’, создавая индекс ‘samples_backup’, который очень важен для резервирования данных.
Массовая загрузка данных
Для массовой загрузки данных:
export pwd="elastic:"
curl --user $pwd -H 'Content-Type: application/x-ndjson' -XPOST 'https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/0/_bulk?pretty' --data-binary @<file>
Этот метод эффективно импортирует большие наборы данных, используя массовый API Elasticsearch.
Индикация состояния кластера
Чтобы проверить состояние кластера Elasticsearch:
curl --user $pwd -H 'Content-Type: application/json' -XGET https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/_cluster/health?pretty
Эта команда предоставляет важную информацию о состоянии кластера, включая состояние узлов и баланс данных.
Агрегация и агрегация ведер
Для аналитических целей, например для подсчета посещений веб-сайтов по городам пользователей:
curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"cityName": {
"terms": {
"field": "geoip.city_name.keyword",
"size": 50
}
}
}
}'
А также более подробные сведения, например, коды ответов по городам:
curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"city": {
"terms": {
"field": "geoip.city_name.keyword"
},
"aggs": {
"responses": {
"terms": {
"field": "response"
}
}
}
},
"responses": {
"terms": {
"field": "response"
}
}
}
}'
Эти примеры показывают, как использовать возможности агрегации Elasticsearch для полноценного анализа данных.
Использование Elasticsearch с базовой аутентификацией
Для безопасной настройки Elasticsearch аутентифицируйте каждую команду curl:
curl -X GET 'http://localhost:9200/_cat/indices?v' -u elastic:(password)
Это гарантирует, что только авторизованные пользователи смогут получить доступ к данным Elasticsearch.
Красивая печать
Улучшает читаемость вывода JSON:
curl -X GET 'http://localhost:9200/(index)/_search'?pretty=true
Добавление ?pretty=true форматирует ответ JSON для более удобного анализа.
Запрос определенных полей
Чтобы вернуть только определенные поля, укажите их в массиве _source:
GET filebeat-7.6.2-2020.05.05-000001/_search
{
"_source": ["suricata.eve.timestamp","source.geo.region_name","event.created"],
"query": {
"match" : { "source.geo.country_iso_code": "GR" }
}
}
Такой подход фокусирует результаты поиска на определенных полях, упрощая поиск данных.
Запрос по дате
Для запросов, основанных на дате:
GET filebeat-7.6.2-2020.05.05-000001/_search
{
"query": {
"range" : {
"event.created": {
"gte" : "now-7d/d"
}
}
}
}
Используйте математику дат для фильтрации документов в определенном временном интервале, что очень важно для анализа данных, чувствительных к времени.
Управление Elasticsearch 8 на Ubuntu 22.04 или 20.04
Деинсталляция Elasticsearch 8
Удаление программного обеспечения Elasticsearch
В тех случаях, когда Elasticsearch больше не нужен, его можно эффективно удалить. Чтобы удалить Elasticsearch из вашей системы, используйте:
sudo apt remove elasticsearch
Эта команда не только удаляет Elasticsearch, но и удаляет все пакеты, которые были установлены вместе с ним и больше не нужны, обеспечивая чистое удаление.
Удаление репозитория APT
После удаления программы важно удалить репозиторий Elasticsearch из списка источников вашей системы. Выполните:
sudo rm /etc/apt/sources.list.d/elastic-8.x.list
Эта команда удаляет файл конфигурации репозитория Elasticsearch, предотвращая доступ системы к устаревшим или ненужным пакетам Elasticsearch при последующих обновлениях или установках.
Заключение
В этом руководстве мы рассмотрели основные моменты управления Elasticsearch 8 на Ubuntu 22.04 или 20.04, от установки и настройки до расширенных запросов и безопасной работы с данными. Помните, что регулярные обновления и правильная настройка — это ключ к использованию всего потенциала Elasticsearch. Не стесняйтесь перечитывать шаги для решения таких задач, как резервное копирование данных или оптимизация запросов, поскольку они имеют решающее значение для поддержания надежной и эффективной среды Elasticsearch.