One place for hosting & domains

      Elasticsearch

      Установка и настройка Elasticsearch в Ubuntu 20.04


      Введение

      Elasticsearch — это платформа для распределенного поиска и анализа данных в режиме реального времени. Она пользуется популярностью благодаря удобству в использовании, наличию мощных характеристик и возможности масштабирования.

      Эта статья расскажет вам о том, как установить Elasticsearch, настроить платформу под ваш вариант использования, обеспечить безопасность установки и начать работу с вашим сервером Elasticsearch.

      Предварительные требования

      Для работы с этим обучающим руководством вам потребуется следующее:

      • Сервер Ubuntu 20.04 с 4 ГБ оперативной памяти и 2 процессорами, а также настроенный пользователь без прав root с привилегиями sudo. Вы можете это сделать, воспользовавшись рекомендациями по начальной настройке сервера с Ubuntu 20.04.

      • Установленный OpenJDK 11.

      В этом обучающем руководстве мы будем использовать минимальное количество процессоров и оперативной памяти, необходимое для работы с Elasticsearch. Обратите внимание, что требования сервера Elasticsearch к количеству процессоров, оперативной памяти и системе хранения данных зависят от ожидаемого объема журналов.

      Шаг 1 — Установка и настройка Elasticsearch

      Компоненты Elasticsearch отсутствуют в репозиториях пакетов Ubuntu по умолчанию. Однако их можно установить с помощью APT после добавления списка источников пакетов Elastic.

      Все пакеты подписаны ключом подписи Elasticsearch для защиты вашей системы от поддельных пакетов. Ваш диспетчер пакетов будет считать надежными пакеты, для которых проведена аутентификация с помощью ключа. На этом шаге вы импортируете открытый ключ Elasticsearch GPG и добавить список источников пакетов Elastic для установки Elasticsearch.

      Для начала используйте cURL, инструмент командной строки для передачи данных с помощью URL, для импорта открытого ключа Elasticsearch GPG в APT. Обратите внимание, что мы используем аргументы -fsSL для подавления всех текущих и возможных ошибок (кроме сбоя сервера), а также чтобы разрешить cURL подать запрос на другой локации при переадресации. Выведите результаты команды cURL в программу apt-key, которая добавит открытый ключ GPG в APT.

      • curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      Затем добавьте список источников Elastic в директорию sources.list.d, где APT будет искать новые источники:

      • echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

      Затем обновите списки пакетов, чтобы APT мог прочитать новый источник Elastic:

      Установите Elasticsearch с помощью следующей команды:

      • sudo apt install elasticsearch

      Теперь система Elasticsearch установлена и готова к настройке.

      Шаг 2 — Настройка Elasticsearch

      Для настройки Elasticsearch мы изменим ее основной файл конфигурации elasticsearch.yml, где хранится большинство вариантов конфигурации. Этот файл находится в директории /etc/elasticsearch.

      Используйте текстовый редактор на ваш выбор для изменения файла конфигурации Elasticsearch. Мы будем использовать nano:

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Примечание. Файл конфигурации Elasticsearch представлен в формате YAML. Это означает, что нам нужно сохранить формат отступов. Не добавляйте никакие дополнительные пробелы при редактировании этого файла.

      Файл elasticsearch.yml предоставляет варианты конфигурации для вашего кластера, узла, пути, памяти, сети, обнаружения и шлюза. Большинство из этих вариантов уже настроены в файле, но вы можете изменить их в соответствии с вашими потребностями. В нашем случае для демонстрации односерверной конфигурации мы будем регулировать настройки только для хоста сети.

      Elasticsearch прослушивает весь трафик порта 9200. По желанию вы можете ограничить внешний доступ к вашему экземпляру Elasticsearch, чтобы посторонние не смогли прочесть ваши данные или отключить ваш кластер Elasticsearch через REST API. Для ограничения доступа и повышения безопасности найдите строку с указанием network.host, уберите с нее значок комментария и замените значение на localhost, чтобы она выглядела следующим образом:

      /etc/elasticsearch/elasticsearch.yml

      . . .
      # ---------------------------------- Network -----------------------------------
      #
      # Set the bind address to a specific IP (IPv4 or IPv6):
      #
      network.host: localhost
      . . .
      

      Мы указали localhost, и теперь Elasticsearch прослушивает все интерфейсы и связанные IP-адреса. Если вы хотите, чтобы прослушивался только конкретный интерфейс, вы можете указать его IP-адрес вместо localhost. Сохраните и закройте elasticsearch.yml. Если вы используете nano, вы можете сделать это, нажав CTRL+X, затем Y, а затем ENTER.

      Это минимальные настройки, с которыми вы можете начинать использовать Elasticsearch. Теперь вы можете запустить Elasticsearch в первый раз.

      Запустите службу Elasticsearch с помощью systemctl. Запуск Elasticsearch может занять некоторое время. В другом случае вы можете увидеть сообщение об ошибке подключения.

      • sudo systemctl start elasticsearch

      Затем запустите следующую команду, чтобы активировать Elasticsearch при каждой загрузке сервера:

      • sudo systemctl enable elasticsearch

      После активации Elasticsearch можно переходить к следующему шагу, где будет обсуждаться вопрос защиты.

      Шаг 3 — Защита Elasticsearch

      По умолчанию любой пользователь, который имеет доступ к HTTP API может контролировать Elasticsearch. Это не всегда связано с риском для безопасности, так как Elasticsearch прослушивает только циклический интерфейс (имеется в виду 127.0.0.1), доступ к которому только локальный. Таким образом, невозможно получить публичный доступ к серверу, и, пока все пользователи сервера являются проверенными, вопрос безопасности не будет для вас серьезной проблемой.

      Если вам потребуется разрешить удаленный доступ к HTTP API, вы можете ограничить открытость сети с помощью настроек брандмауэра Ubuntu по умолчанию, UFW. Этот брандмауэр уже должен быть активирован, если вы выполнили все предварительные шаги по начальной настройке сервера с Ubuntu 20.04.

      Теперь мы настроим брандмауэр для доступа к порту HTTP API Elasticsearch по умолчанию (TCP 9200) для доверенного удаленного хоста. Как правило, это сервер, который вы используете при настройке на одном сервере, например 198.51.100.0. Для доступа введите следующую команду:

      • sudo ufw allow from 198.51.100.0 to any port 9200

      После этого вы можете активировать UFW с помощью команды:

      В заключение проверьте статус UFW с помощью следующей команды:

      Если вы правильно указали правила, вы должны получить следующий результат:

      Output

      Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

      Теперь UFW должен быть активирован и настроен на защиту порта Elasticsearch 9200.

      Если вы хотите инвестировать в дополнительную защиту, Elasticsearch предлагает к покупке платный плагин Shield.

      Шаг 4 — Тестирование Elasticsearch

      Сейчас система Elasticsearch должна работать на порту 9200. Вы можете протестировать ее с помощью cURL и запроса GET.

      • curl -X GET 'http://localhost:9200'

      Вы должны получить следующий ответ:

      Output

      { "name" : "elasticsearch-ubuntu20-04", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

      Если вы получите ответ, аналогичный вышеуказанному, значит Elasticsearch работает корректно. Если нет, убедитесь, что вы правильно выполнили инструкции по установке и дали время системе Elasticsearch для полного запуска.

      Для более тщательной проверки Elasticsearch выполните следующую команду:

      • curl -XGET 'http://localhost:9200/_nodes?pretty'

      В выводе для команды, указанной выше, вы можете проверить все текущие настройки для узла, кластера, путей приложения, модулей и т. д.

      Шаг 5 — Использование Elasticsearch

      Чтобы начать использовать Elasticsearch, в первую очередь нужно добавить некоторые данные. Elasticsearch использует RESTful API, который соответствует обычным командам CRUD: create, read, update и delete. Для работы мы снова используем команду cURL.

      Ваша первая запись может выглядеть так:

      • curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

      Вы должны получить следующий ответ:

      Output

      {"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

      С помощью cURL мы отправили запрос HTTP POST на сервер Elasticsearch. URI запроса — /tutorial/helloworld/1​​ с несколькими параметрами:

      • tutorial — это индекс данных в Elasticsearch.
      • helloworld — это тип.
      • 1 — это ID нашей записи по индексу и типу.

      Вы можете получить эту первую запись по запросу HTTP GET.

      • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

      Вывод должен выглядеть следующим образом:

      Output

      {"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

      Для изменения существующей записи вы можете использовать запрос HTTP PUT.

      • curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
      • {
      • "message": "Hello, People!"
      • }'

      Elasticsearch должна признать успешное изменение следующим образом:

      Output

      { "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

      В примере, представленном выше, мы изменили message первой записи на «Hello, People!». При этом номер версии автоматически увеличился до 2.

      Возможно, вы заметили дополнительный аргумент pretty в представленном выше запросе. Он обеспечивает удобный для восприятия человеком формат, и вы можете для написания каждого поля данных использовать новый ряд. Вы также можете «приукрасить» ваши результаты при получении данных, чтобы получить более читабельный вывод, путем введения следующей команды:

      • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

      Теперь ответ отформатирован так, чтобы синтаксис был удобен для человека:

      Output

      { "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }

      Мы добавили и запросили данные в Elasticsearch. Информацию о других операциях можно найти в документации API.

      Заключение

      Вы установили, настроили и начали использовать Elasticsearch. Чтобы продолжить изучение функций Elasticsearch, ознакомьтесь с официальной документацией Elasticsearch.



      Source link

      So installieren und konfigurieren Sie Elasticsearch unter Ubuntu 20.04


      Einführung

      Elasticsearch ist eine Plattform für verteilte Suche und Analyse von Daten in Echtzeit. Aufgrund hoher Benutzerfreundlichkeit, leistungsfähiger Funktionen und Skalierbarkeit ist sie eine beliebte Wahl.

      In diesem Artikel installieren Sie Elasticsearch, konfigurieren es für Ihren Anwendungsfall, sichern Ihre Installation und unternehmen die ersten Schritte mit Ihrem Elasticsearch-Server.

      Voraussetzungen

      Bevor Sie dieses Tutorial absolvieren, benötigen Sie Folgendes:

      In diesem Tutorial arbeiten wir mit der Mindestmenge von CPUs und RAM, die zur Ausführung von Elasticsearch benötigt werden. Beachten Sie, dass die Menge von CPUs, RAM und Speicher, die Ihr Elasticsearch-Server benötigt, von der Menge der Protokolle abhängt, die Sie erwarten.

      Schritt 1 — Installieren und Konfigurieren von Elasticsearch

      Die Elasticsearch-Komponenten sind in Standard-Paket-Repositorys von Ubuntu nicht verfügbar. Sie können jedoch mit APT installiert werden, nachdem Sie die Paketquellliste von Elastic hinzugefügt haben.

      Alle Pakete werden mit dem Signierschlüssel von Elasticsearch signiert, um das System vor Paket-Spoofing zu schützen. Pakete, die mit dem Schlüssel authentifiziert wurden, werden von Ihrem Paketmanager als vertrauenswürdig eingestuft. In diesem Schritt importieren Sie den öffentlichen GPG-Schlüssel von Elasticsearch und fügen die Paketquellliste von Elasticsearch hinzu, um Elasticsearch zu installieren.

      Verwenden Sie zunächst cURL, das Befehlszeilentool zur Übertragung von Daten mit URLs, um den öffentlichen GPG-Schlüssel von Elasticsearch in APT zu importieren. Beachten Sie, dass wir die Argumente -fsSL nutzen, um alle Fortschritte und möglichen Fehler stumm zu schalten (ausgenommen Serverfehler) und um zuzulassen, dass cURL bei einer Umleitung eine Anfrage an einem neuen Ort stellt. Leiten Sie die Ausgabe des cURL-Befehls in das APT-Schlüsselprogramm weiter, das den öffentlichen GPG-Schlüssel zu APT hinzufügt.

      • curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      Fügen Sie als Nächstes die Elastic-Quellliste in das Verzeichnis sources.list.d ein, in dem APT nach neuen Quellen sucht:

      • echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

      Aktualisieren Sie als Nächstes Ihre Paketlisten, damit APT die neue Elastic-Quelle liest:

      Installieren Sie dann Elasticsearch mit diesem Befehl:

      • sudo apt install elasticsearch

      Elasticsearch ist nun installiert und bereit für die Konfiguration.

      Schritt 2 — Konfigurieren von Elasticsearch

      Um Elasticsearch zu konfigurieren, bearbeiten wir die Hauptkonfigurationsdatei elasticsearch.yml, in der die meisten Konfigurationsoptionen gespeichert sind. Diese Datei befindet sich im Verzeichnis /etc/elasticsearch.

      Verwenden Sie zur Bearbeitung der Konfigurationsdatei von Elasticsearch Ihren bevorzugten Texteditor. Wir verwenden hier nano:

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Anmerkung: Die Konfigurationsdatei von Elasticsearch liegt im YAML-Format vor. Das bedeutet, dass wir das Einrückungsformat beibehalten müssen. Achten Sie darauf, dass Sie beim Bearbeiten der Datei keine zusätzlichen Leerzeichen hinzufügen.

      Die Datei elasticsearch.yml bietet Konfigurationsoptionen für Cluster, Knoten, Pfade, Arbeitsspeicher, Netzwerk, Suche und Gateway. Die meisten dieser Optionen sind in der Datei vorkonfiguriert, aber Sie können sie je nach Ihren Bedürfnissen ändern. Im Sinne unserer Demonstration einer Konfiguration mit nur einem Server werden wir nur die Einstellungen für den Netzwerkhost anpassen.

      Elasticsearch lauscht an Port 9200 auf Verkehr von überall. Sie werden externen Zugriff auf Ihre Elasticsearch-Instanz einschränken wollen, um zu verhindern, dass externe Personen Ihre Daten lesen oder Ihren Elasticsearch-Cluster mit der REST-API herunterfahren. Um Zugriff zu beschränken und damit die Sicherheit zu erhöhen, suchen Sie nach der Zeile, die network.host angibt, heben Sie die Kommentierung auf und ersetzen den Wert durch localhost, sodass die Zeile wie folgt aussieht:

      /etc/elasticsearch/elasticsearch.yml

      . . .
      # ---------------------------------- Network -----------------------------------
      #
      # Set the bind address to a specific IP (IPv4 or IPv6):
      #
      network.host: localhost
      . . .
      

      Wir haben localhost angegeben, damit Elasticsearch an allen Schnittstellen und gebundenen IPs lauscht. Wenn Sie möchten, dass nur an einer bestimmten Schnittstelle gelauscht werden soll, können Sie deren IP-Adresse an Stelle von localhost angeben. Speichern und schließen Sie elasticsearch.yml. Wenn Sie nano verwenden, können Sie dazu STRG+X drücken, gefolgt von Y und dann ENTER.

      Das sind die Mindesteinstellungen, mit denen Sie beginnen können, um Elasticsearch zu verwenden. Sie können Elasticsearch jetzt zum ersten Mal starten.

      Starten Sie den Elasticsearch-Dienst mit systemctl. Geben Sie Elasticsearch einige Momente zum Starten. Andernfalls erhalten Sie möglicherweise Fehlermeldungen, dass Sie keine Verbindung herstellen können.

      • sudo systemctl start elasticsearch

      Führen Sie als Nächstes den folgenden Befehl aus, damit Elasticsearch bei jedem Server-Boot gestartet wird:

      • sudo systemctl enable elasticsearch

      Nachdem Elasticsearch beim Starten nun aktiviert ist, fahren wir mit dem nächsten Schritt fort und besprechen das Thema Sicherheit.

      Schritt 3 — Sichern von Elasticsearch

      Standardmäßig kann Elasticsearch von jedem kontrolliert werden, der auf die HTTP-API zugreifen kann. Das ist nicht immer ein Sicherheitsproblem, da Elasticsearch nur an der Loopback-Schnittstelle lauscht (d. h. 127.0.0.1), auf die nur lokal zugegriffen werden kann. So ist kein öffentlicher Zugriff möglich und solange alle Serverbenutzer vertrauenswürdig sind, ist Sicherheit möglicherweise kein großes Problem.

      Wenn Sie Remotezugriff auf die HTTP-API zulassen müssen, können Sie das Gefahrenpotenzial im Netzwerk mit der Standard-Firewall von Ubuntu (UFW) reduzieren. Diese Firewall sollte bereits aktiviert sein, wenn Sie die Schritte im Tutorial Ersteinrichtung eines Servers unter Ubuntu 20.04 ausgeführt haben.

      Wir konfigurieren nun die Firewall, um Zugriff auf den standardmäßigen HTTP-API-Port (TCP 9200) für den vertrauenswürdigen Remote-Host zuzulassen. Das ist in der Regel der Server, den Sie in einer Einrichtung mit einem einzelnen Server verwenden, wie zum Beispiel 198.51.100.0. Geben Sie, um Zugriff zuzulassen, den folgenden Befehl ein:

      • sudo ufw allow from 198.51.100.0 to any port 9200

      Danach können Sie UFW mit folgendem Befehl aktivieren:

      Überprüfen Sie abschließend mit folgendem Befehl den Status von UFW:

      Wenn Sie die Regeln richtig angegeben haben, sollten Sie eine Ausgabe wie diese erhalten:

      Output

      Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

      Die UFW sollte jetzt aktiviert und zum Schutz von Elasticsearch Port 9200 eingerichtet ein.

      Wenn Sie in zusätzlichen Schutz investieren möchten, bietet Elasticsearch das kommerzielle Shield-Plugin zum Kauf an.

      Schritt 4 — Testen von Elasticsearch

      Jetzt sollte Elasticsearch an Port 9200 ausgeführt werden. Sie können das mit cURL und einer GET-Anfrage testen.

      • curl -X GET 'http://localhost:9200'

      Sie sollten die folgende Antwort erhalten:

      Output

      { "name" : "elasticsearch-ubuntu20-04", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

      Wenn Sie eine Antwort sehen, die der obigen ähnelt, funktioniert Elasticsearch richtig. Wenn nicht, stellen Sie sicher, dass Sie die Installationsanweisungen richtig befolgt und Elasticsearch Zeit zum vollständigen Starten gegeben haben.

      Um eine gründlichere Prüfung von Elasticsearch vorzunehmen, führen Sie den folgenden Befehl aus:

      • curl -XGET 'http://localhost:9200/_nodes?pretty'

      In der Ausgabe des obigen Befehls können Sie alle aktuellen Einstellungen für Knoten, Cluster, Anwendungspfade, Module und mehr überprüfen.

      Schritt 5 — Verwenden von Elasticsearch

      Um mit der Verwendung von Elasticsearch zu beginnen, fügen wir zuerst Daten hinzu. Elasticsearch nutzt eine RESTful-API, die auf die üblichen CRUD-Befehle reagiert: create, read, update und delete. Dazu verwenden wir erneut den Befehl cURL.

      Sie können Ihren ersten Eintrag wie folgt hinzufügen:

      • curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

      Sie sollten die folgende Antwort erhalten:

      Output

      {"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

      Mit cURL haben wir eine HTTP-POST-Anfrage an den Elasticsearch-Server gesendet. Der URI der Anfrage war /tutorial/helloworld/1 mit mehreren Parametern:

      • tutorial ist der Index der Daten in Elasticsearch.
      • helloworld ist der Typ.
      • 1 ist die ID unseres Eintrags unter dem obigen Index und Typ.

      Sie können diesen ersten Eintrag mit einer HTTP-GET-Anfrage abrufen.

      • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

      Die Ausgabe sollte wie folgt aussehen:

      Output

      {"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

      Um einen bestehenden Eintrag zu ändern, können Sie eine HTTP-PUT-Anfrage verwenden.

      • curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
      • {
      • "message": "Hello, People!"
      • }'

      Elasticsearch sollte die erfolgreiche Änderung wie folgt bestätigen:

      Output

      { "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

      Im obigen Beispiel haben wir die message des ersten Eintrags in “Hello, People!” geändert. Damit wurde die Versionsnummer automatisch auf 2 erhöht.

      Vielleicht haben Sie in der obigen Anfrage das zusätzliche Argument pretty bemerkt. Das ermöglicht ein visuell lesbares Format, sodass Sie jedes Datenfeld in eine neue Zeile schreiben können. Sie können Ihre Ergebnisse beim Abruf von Daten auch „verschönern“, um eine besser lesbare Ausgabe zu erhalten, indem Sie den folgenden Befehl eingeben:

      • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

      Nun wird die Antwort so formatiert, dass sie visuell analysiert werden kann:

      Output

      { "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }

      Wir haben jetzt Daten in Elasticsearch hinzugefügt und abgefragt. Um mehr über die anderen Operationen zu erfahren, konsultieren Sie bitte die API-Dokumentation.

      Zusammenfassung

      Sie haben Elasticsearch jetzt installiert, konfiguriert und erstmals verwendet. Um die Funktionalität von Elasticsearch weiter zu erkunden, lesen Sie bitte die offizielle Elasticsearch-Dokumentation.



      Source link

      Cómo instalar y configurar Elasticsearch en Ubuntu 20.04


      Introducción

      Elasticsearch es una plataforma para la búsqueda y el análisis distribuidos de datos en tiempo real. Es una opción popular debido a su facilidad de uso, sus funciones potentes y su escalabilidad.

      En este artículo, se explicará cómo instalar Elasticsearch, configurarla para su caso de uso, proteger su instalación y comenzar a trabajar con su servidor de Elasticsearch.

      Requisitos previos

      Antes de comenzar con este tutorial, necesitará lo siguiente:

      En este tutorial, trabajaremos con la cantidad mínima de CPU y RAM requerida para ejecutar Elasticsearch. Tenga en cuenta que la cantidad de CPU, RAM y almacenamiento que su servidor de Elasticsearch requiera dependerá del volumen de registros que espera.

      Paso 1: Instalar y configurar Elasticsearch

      Los componentes de Elasticsearch no están disponibles en los repositorios de paquetes predeterminados de Ubuntu. Sin embargo, pueden instalarse con APT una vez que agregue la lista de fuentes de paquetes de Elastic.

      Todos los paquetes de Elasticsearch están firmados con la clave de firma de Elasticsearch para proteger su sistema contra la suplantación de paquetes. Su administrador de paquetes considerará confiables los paquetes autenticados con la clave. En este paso, importará la clave GPG pública de Elasticsearch y agregará la lista de fuentes de paquetes de Elastic para instalar Elasticsearch.

      Para comenzar, utilice cURL, la herramienta de línea de comandos para transferir datos con URL, para importar la clave GPG pública de Elasticsearch a APT. Tenga en cuenta que estamos usando los argumentos -fsSL para silenciar todos los progresos y posibles errores (excepto los errores del servidor) y para permitir a cURL hacer una solicitud en una ubicación nueva si se redirige. Canalice el resultado del comando cURL al programa apt-key, que añade la clave GPG pública a APT.

      • curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      A continuación, agregue la lista de fuentes de Elastic al directorio sources.list.d, donde APT buscará nuevas fuentes:

      • echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

      A continuación, actualice sus listas de paquetes para que APT lea la nueva fuente de Elastic:

      Luego, instale Elasticsearch con este comando:

      • sudo apt install elasticsearch

      Ahora, Elasticsearch está instalada y lista para utilizarse.

      Paso 2: Configurar Elasticsearch

      Para configurar Elasticsearch, editaremos su archivo de configuración principal elasticsearch.yml, donde se almacena la mayoría de sus opciones de configuración. Este archivo se encuentra en el directorio /etc/elasticsearch.

      Utilice su editor de texto preferido para editar el archivo de configuración de Elasticsearch. En este caso, utilizaremos nano:

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Nota: el archivo de configuración de Elasticsearch se encuentra en formato YAML, lo que significa que debemos mantener el formato de sangrías. Asegúrese de no añadir espacios adicionales al editar este archivo.

      El archivo elasticsearch.yml ofrece opciones de configuración para su clúster, nodo, rutas, memoria, red, detección y puerta de enlace. La mayoría de estas opciones están preconfiguradas en el archivo, pero las puede cambiar según sus necesidades. Para los fines de nuestra demostración de una configuración de un solo servidor, modificaremos únicamente la configuración del host de red.

      Elasticsearch escucha el tráfico de todos los lugares en el puerto 9200. Es conveniente restringir el acceso externo a su instancia de Elasticsearch para evitar que terceros lean sus datos o cierren su clúster de Elasticsearch a través de su API REST. Para restringir el acceso y, por lo tanto, aumentar la seguridad, busque la línea que especifica network.host, elimine los comentarios y reemplace su valor por localhost para que diga:

      /etc/elasticsearch/elasticsearch.yml

      . . .
      # ---------------------------------- Network -----------------------------------
      #
      # Set the bind address to a specific IP (IPv4 or IPv6):
      #
      network.host: localhost
      . . .
      

      Hemos especificado localhost para que Elasticsearch escuche en todas las interfaces y las IP vinculadas. Si quiere que escuche únicamente en una interfaz específica, puede especificar su IP en lugar de localhost. Guarde y cierre elasticsearch.yml. Si utiliza nano, puede hacerlo pulsando CTRL+X, seguido de Y y, luego, ENTER.

      Estos son los ajustes mínimos con los que puede comenzar para usar Elasticsearch. Ahora, puede iniciar Elasticsearch por primera vez.

      Inicie el servicio de Elasticsearch con systemctl. Elasticsearch tardará unos minutos en iniciarse. Espere, de lo contrario, es posible que reciba notificaciones de error indicando que no se puede conectar.

      • sudo systemctl start elasticsearch

      Luego, ejecute el siguiente comando para permitir que Elasticsearch se cargue cada vez que su servidor se inicie:

      • sudo systemctl enable elasticsearch

      Ahora que Elasticsearch está habilitado en el inicio, vayamos al siguiente paso para hablar sobre la seguridad.

      Paso 3: Proteger Elasticsearch

      Por defecto, cualquier persona que pueda acceder a la API HTTP puede controlar Elasticsearch. Esto no siempre representa un riesgo de seguridad, dado que Elasticsearch escucha únicamente en la interfaz de bucle invertido (es decir, 127.0.0.1), a la que solo se puede acceder de forma local. Por lo tanto, el acceso público no es posible, y, siempre y cuando todos los usuarios del servidor sean confiables, la seguridad no será una preocupación importante.

      Si necesita permitir el acceso remoto a la API HTTP, puede limitar la exposición de la red con el firewall predeterminado de Ubuntu, UFW. Ya debería tener este firewall habilitado si siguió los pasos del tutorial Configuración inicial del servidor con Ubuntu 20.04 que se indicó en los requisitos previos.

      Ahora, configuraremos el firewall para que permita el acceso al puerto de la API HTTP predeterminada de Elasticsearch (TCP 9200) para el host remoto de confianza que, en general, es el servidor que utiliza en una configuración de un solo servidor, como 198.51.100.0. Para permitir el acceso, escriba el siguiente comando:

      • sudo ufw allow from 198.51.100.0 to any port 9200

      Cuando haya terminado, puede habilitar UFW con el siguiente comando:

      Por último, revise el estado de UFW con el comando que se indica a continuación:

      Si especificó las reglas correctamente, debería obtener el siguiente resultado:

      Output

      Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

      Ahora, el UFW debería estar habilitado y configurado para proteger el puerto 9200 de Elasticsearch.

      Si quiere invertir en protección adicional, Elasticsearch ofrece el complemento Shield comercial para su compra.

      Paso 4: Probar Elasticsearch

      Ahora, Elasticsearch debería estar ejecutándose en el puerto 9200. Puede probarla con cURL y una solicitud GET.

      • curl -X GET 'http://localhost:9200'

      Debería recibir la siguiente respuesta:

      Output

      { "name" : "elasticsearch-ubuntu20-04", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

      Si obtiene una respuesta similar a la anterior, Elasticsearch funciona correctamente. De lo contrario, asegúrese de haber seguido correctamente las instrucciones de instalación y de haber esperado un tiempo para que Elasticsearch se inicie por completo.

      Para realizar una verificación más completa de Elasticsearch, ejecute el siguiente comando:

      • curl -XGET 'http://localhost:9200/_nodes?pretty'

      En el resultado del comando anterior, puede verificar todos los ajustes actuales del nodo, el clúster, las rutas de las aplicaciones, los módulos y más.

      Paso 5: Usar Elasticsearch

      Para comenzar a usar Elasticsearch, primero, añadiremos algunos datos. Elasticsearch utiliza una API RESTful, que responde a los comandos habituales de CRUD: create, read, update y delete (crear, leer, actualizar y eliminar, respectivamente). Para usarlo, utilizaremos el comando cURL de nuevo.

      Puede añadir la primera entrada de la siguiente manera:

      • curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

      Debería recibir la siguiente respuesta:

      Output

      {"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

      Con cURL, enviamos una solicitud HTTP POST al servidor de Elasticsearch. El identificador URI de la solicitud era /tutorial/helloworld/1 con varios parámetros:

      • tutorial es el índice de los datos de Elasticsearch.
      • helloworld es el tipo.
      • 1 es el ID de nuestra entrada bajo el índice y el tipo anteriores.

      Puede recuperar esta primera entrada con una solicitud HTTP GET.

      • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

      El resultado debería ser el siguiente:

      Output

      {"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

      Para modificar una entrada existente, puede utilizar una solicitud HTTP PUT.

      • curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
      • {
      • "message": "Hello, People!"
      • }'

      Elasticsearch debería reconocer la modificación correcta de esta manera:

      Output

      { "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

      En el ejemplo anterior, modificamos el mensaje de la primera entrada a “Hello, People!”. Con eso, el número de versión se aumentó automáticamente a 2.

      Tal vez haya observado el argumento adicional pretty en la solicitud anterior. Habilita un formato de lenguaje natural para que pueda escribir cada campo de datos en una fila nueva. También puede aplicarlo a sus resultados cuando recupera datos para que sean más legibles al ingresar el siguiente comando:

      • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

      Ahora, la respuesta tendrá un formato que permite que un humano la analice:

      Output

      { "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }

      En este punto, añadimos y consultamos datos en Elasticsearch. Para obtener más información sobre las demás operaciones, consulte la documentación de la API.

      Conclusión

      Ya instaló, configuró y comenzó a utilizar Elasticsearch. Para seguir explorando la funcionalidad de Elasticsearch, consulte la documentación oficial de Elasticsearch.



      Source link