Как установить Elasticsearch 8 на Ubuntu 22.04

В современном быстро развивающемся цифровом ландшафте 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.

Поделитесь с друзьями
Підписатися
Сповістити про
guest

0 комментариев
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x