GNU/Linux >> Linux の 問題 >  >> Debian

Debian11BullseyeにElasticsearchをインストールする方法

Elasticsearch は拡張性の高いオープンソースの全文検索および分析エンジンです。 。このソフトウェアは、大量のデータを迅速かつほぼリアルタイムで保存、検索、分析できるRESTful操作をサポートしています。 Elasticsearchは、Luceneライブラリに基づく強力な検索エンジンであるため、システム管理者や開発者の間で人気があり、人気があります。これは通常、複雑な検索機能と要件を備えたアプリケーションを強化する基盤となるエンジン/テクノロジーとして使用されます。

次のチュートリアルでは、 Debian11BullseyeにElasticSearchをインストールする方法を学習します 。

前提条件

  • 推奨OS: Debian11ブルズアイ
  • ユーザーアカウント: sudoまたはrootアクセス権を持つユーザーアカウント。
  • 必要なパッケージ: カールとJava

Curlのインストール

カール このガイドの一部に必要です。このパッケージをインストールするには、次のコマンドを入力します。

sudo apt install curl -y

Javaのインストール

正常にインストールし、さらに重要なことに、 Elasticsearchを使用するには 、 Javaをインストールする必要があります 。プロセスは非常に簡単です。

次のコマンドを入力して、 OpenJDKをインストールします パッケージ:

sudo apt install default-jdk

インストールするパッケージの出力例:

インストールを続行するには、(Y)と入力します 次に、(ENTER)を押します キー。

次に、次のコマンドを使用して、インストールされているJavaバージョンとビルドを確認します。

java -version

以下の出力例:

Elasticsearchのインストール

Elasticsearchは標準のDebian11リポジトリでは利用できないため、ElasticsearchAPTリポジトリからインストールする必要があります。

リポジトリを追加する前に、GPGキーをインポートしてください 次のコマンドを使用します:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

(OK)を使用した出力例 成功したことの確認:

GPGキーを追加したので、Elasticsearchリポジトリは信頼されます。次のターミナルコマンドを使用して、公式リポジトリのインストールに進みます。

sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

チュートリアルの作成時点では、Elasticsearch 7.13.4が最新バージョンですが、時間の経過とともに変更され、追加したリポジトリは将来の7.x.xバージョンで機能します。

次に、リポジトリリストを更新し、次のようにElasticsearchをインストールします。

sudo apt update && sudo apt install elasticsearch

デフォルトでは、Elasticsearchサービスは起動時に無効になり、アクティブではありません。サービスを開始してシステム起動時に有効にするには、次のように入力します(systemctl) コマンド:

sudo systemctl enable elasticsearch.service --now

次に、Elasticsearchが正しく実行されていることを確認するために、 curlを使用します HTTPリクエストを送信するコマンド ポート9200 ローカルホスト 次のように:

curl -X GET "localhost:9200/"

Elasticsearchが正しく機能していることを確認するための出力例:

Elasticsearchがシステムに記録するシステムメッセージを表示するには、次のコマンドを入力します。

sudo journalctl -u elasticsearch

出力ログの例:

Elasticsearchの設定

Elasticsearchデータはデフォルトのディレクトリの場所(/ var / lib / elasticsearch)に保存されます 。構成ファイルを表示または編集するには、ディレクトリの場所(/ etc / elasticsearch)にあります。 、およびjava起動オプションは(/ etc / default / elasticsearch)で構成できます 構成ファイル。

Elasticsearchはlocalhostで実行されるため、デフォルト設定は、単一のオペレーティングサーバーではほとんど問題ありません。 それだけ。ただし、クラスターをセットアップする場合は、リモート接続を許可するように構成ファイルを変更する必要があります。

リモートアクセスの設定(オプション)

デフォルトでは、Elasticsearchはlocalhostのみをリッスンします。これを変更するには、次のように構成ファイルを開きます。

sudo nano /etc/elasticsearch/elasticsearch.yml

次に、下にスクロールして[ネットワーク]セクションを見つけ、コメント解除(#) 次の行を次のように内部プライベートIPアドレスまたは外部IPアドレスに置き換えます。

この例では、コメントを外しました(#) (network.host) 社内プライベートIPアドレスに変更しました。

セキュリティ上の理由から、アドレスを指定するのに理想的です。ただし、サーバーにアクセスする複数の内部または外部IPアドレスがある場合は、ネットワークインターフェイスを変更して、(0.0.0.0)を入力してすべてをリッスンします。 次のように:

次に、構成ファイルを保存します(CTRL + O) 次に、(CLTR + X)を終了します 。

変更を有効にするには、次のコマンドを使用してElasticsearchサービスを再起動する必要があります。

sudo systemctl restart elasticsearch

リモート接続を許可するようにUFWファイアウォールを構成する

リモート接続を許可する場合は、ファイアウォールがそれらのIPアドレスの接続を許可することを許可する必要があります。これは、次のコマンドで実行できます。

sudo ufw allow from <IP Address> to any port 9200

DebianとUFWファイアウォールの詳細については、DebianでUFWファイアウォールを構成する方法を参照してください。

Elasticsearchの使用方法

curlコマンドを使用してElasticsearchを使用するには 簡単なプロセスです。以下は、最も一般的に使用されるものの一部です。

インデックスの削除

インデックスの下にはサンプルという名前が付けられています 。

curl -X DELETE 'http://localhost:9200/samples'

すべてのインデックスを一覧表示

curl -X GET 'http://localhost:9200/_cat/indices?v'

すべてのドキュメントをインデックスに一覧表示

curl -X GET 'http://localhost:9200/sample/_search'

URLパラメータを使用したクエリ

ここでは、Luceneクエリ形式を使用してq =school:Harvardを記述します。

curl -X GET http://localhost:9200/samples/_search?q=school:Harvard

JSONを使用したクエリ(別名ElasticsearchクエリDSL)

URLのパラメータを使用してクエリを実行できます。ただし、次の例に示すように、JSONを使用することもできます。複雑なクエリがある場合、URLパラメータの1つの巨大な文字列よりも、JSONの方が読みやすくデバッグしやすいでしょう。

curl -XGET --header 'Content-Type: application/json' http://localhost:9200/samples/_search -d '{
      "query" : {
        "match" : { "school": "Harvard" }
    }
}'

リストインデックスマッピング

すべてのElasticsearchフィールドはインデックスです。したがって、これにより、インデックス内のすべてのフィールドとそのタイプが一覧表示されます。

curl -X GET http://localhost:9200/samples

データの追加

curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/1 -d '{
   "school" : "Harvard"			
}'

ドキュメントの更新

既存のドキュメントにフィールドを追加する方法は次のとおりです。まず、新しいものを作成します。次に、それを更新します。

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}
}'

バックアップインデックス

curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/_reindex -d '{
  "source": {
    "index": "samples"
  },
  "dest": {
    "index": "samples_backup"
  }
}'

JSON形式の一括読み込みデータ

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>

クラスターの状態を表示する

curl --user $pwd  -H 'Content-Type: application/json' -XGET https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/_cluster/health?pretty

集約とバケット集約

Nginx Webサーバーの場合、これによりユーザー都市ごとのWebヒット数が生成されます:

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

        }
   }
  }
}
'

これにより、NginxWebサーバーログ内の都市ごとの製品応答コード数に拡張されます

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でセキュリティをオンにしている場合は、すべてのcurlコマンドに以下に示すようなユーザーとパスワードを指定する必要があります。

curl -X GET 'http://localhost:9200/_cat/indices?v' -u elastic:(password)

プリティプリント

JSONをきれいに印刷するには、検索に?pretty=trueを追加します。このように:

 curl -X GET 'http://localhost:9200/(index)/_search'?pretty=true

特定のフィールドのみを照会して返すには

特定のフィールドのみを返すには、それらを_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" }
    }
}

日付でクエリするには

フィールドのタイプがdateの場合、次のように日付計算を使用できます。

GET filebeat-7.6.2-2020.05.05-000001/_search
 {
    "query": {
        "range" : {
            "event.created": {
                "gte" : "now-7d/d"
            }
        }
}
}

Elasticsearchのアンインストール

Elasticsearchが不要になった場合は、次のコマンドでソフトウェアを削除できます。

sudo apt remove elasticsearch

次のようにaptリポジトリを削除します:

sudo rm /etc/apt/sources.list.d/elastic-7.x.list

次に、リポジトリリストを更新して、変更を反映します。

sudo apt update

Debian
  1. DebianLinuxにElasticsearchをインストールする方法

  2. Python3.8をDebian11Bullseyeにインストールする方法

  3. Python3.9をDebian11Bullseyeにインストールする方法

  1. Debian9にRをインストールする方法

  2. Debian9にElasticsearchをインストールする方法

  3. Debian10にElasticsearchをインストールする方法

  1. Debian10にRをインストールする方法

  2. Debian 11(Bullseye)をステップバイステップでインストールする方法

  3. Debian11のインストール方法