Elasticsearch のインストールと使用については、この記事で十分です。

Elasticsearchを学ぶにはこの記事で十分です


1.ESの紹介

  Elasticsearch は、Apache Lucene に基づくオープンソースの検索エンジンです。Lucene は、これまでで最も先進的で、最もパフォーマンスが高く、最も包括的な検索エンジン ライブラリであると考えられます。特徴: 分散型リアルタイム ファイル ストレージ、各フィールドはインデックス付けされ検索可能 分散型リアルタイム分析検索エンジン – 不規則なクエリに対して数百台のサーバーに拡張可能、PB レベルの構造化または非構造化データを処理 Elasticsearch これも Java で開発されており、以下を使用しますLucene はすべてのインデックス作成および検索機能を実装するコアですが、その目的は、シンプルな RESTful API を通じて Lucene の複雑さを隠し、全文検索をシンプルにすることです。

2. 単一 ES インストール

1.ESダウンロード

ES公式サイト:ElasticSearch公式サイト

2.インストール

1.アップロード後解凍します

ここに画像の説明を挿入します
解凍コマンド:tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz

解凍されたファイルを /usr/local/ ディレクトリに移動します。mv elasticsearch-7.4.2 /usr/local/
ここに画像の説明を挿入します

2. ES ディレクトリの概要

ここに画像の説明を挿入します

  • bin: 実行ファイルが入っており、es を実行するためのコマンドが
    スクリプトファイルなどを含めて入っています。
  • config: 設定ファイルのディレクトリ
  • jdk:java環境
  • lib: 依存するjar、クラスライブラリ
  • ログ: ログ ファイル
  • モジュール:es 関連モジュール
  • プラグイン:自分で開発できるプラグイン
  • data: このディレクトリは存在しません。自分で作成します。後で ->mkdir データを使用します。これはインデックス ディレクトリとして使用されます。

3. コア構成ファイル elasticarch.yml を変更します。

  • クラスター名を変更します。デフォルトは elasticsearch です。現在は単一のマシンですが、
    デフォルトのマシンも存在します。

  • 現在の s ノードに名前を付けます。名前は任意です。クラスタ環境にある場合は、
    対応する名前が必要です。
    vim config/elasticsearch.yml
    ここに画像の説明を挿入します

  • データデータ格納アドレスの変更

  • ログデータの保存アドレスを変更する
    /usr/local/elasticsearch-7.4.2/data
    /usr/local/elasticsearch-7.4.2/logs
    ここに画像の説明を挿入します

  • ネットワーク IP をバインドします。原理は Redis と同じです

  • デフォルトのポート番号。カスタマイズおよび変更可能

  • クラスターノード、最初に名前を以前のノード名に変更できます
    ここに画像の説明を挿入します

4. JVMパラメータを変更する

ここに画像の説明を挿入します
ここに画像の説明を挿入します

デフォルトでは、xms と xmx は両方とも 1g です。仮想マシンのメモリはそれほど大きくありません。変更するだけです。オンライン環境のメモリが大きい場合は、変更する必要はありません。

5.ユーザーの追加

ES では root で es を操作することはできません。ユーザーを追加する必要があります。操作は次のとおりです。

#添加用户
useradd esuser
#授权
chown -R esuser:esuser /usr/local/elasticsearch-7.4.2
su esuser
whoami

6.ESを開始する

./elasticsearch
次のエラーが発生した場合は、
ここに画像の説明を挿入します
oot ユーザーに切り替えて、次のように構成を変更する必要があります。
vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

ここに画像の説明を挿入します

vim /etc/sysctl.conf

vm.max_map_count=262145

ここに画像の説明を挿入します

忘れずsysctl -pに更新して、
最後にもう一度始めてください。OK

7.テスト


ここに画像の説明を挿入します
仮想マシンの IP + ポート番号 9200 にアクセスします。次の意味は、停止しても OK です。
フォアグラウンドで開始されている場合は、 ctrl+c だけで停止します
。バックグラウンドで開始:
./elasticsearch -d
プロセスの強制終了を停止します:
jps
kill+プロセス番号
ここに画像の説明を挿入します

ポート番号の意味

  • 9200: HTTP プロトコル、外部通信に使用されます。
  • 9300: Tcp プロトコル、ES クラスター間の通信は 9300 を介して行われます

3. Elasticsearchクラスターの構築

1. まず 3 台のサーバーのクローンを作成します

ここに画像の説明を挿入します

2. ESクラスターの構築

環境整備

ホスト名 IP
es01 192.168.92.110
es02 192.168.92.111
es03 192.168.92.112

2.1 3 つのサーバー (es01、es02、es03) でそれぞれ次の操作を実行します。

esのデータディレクトリに入り、ノードデータを削除します。
cd /usr/local/elasticsearch-7.4.2/data
rm nodes/ -rf
ここに画像の説明を挿入します

2.2 3 台のサーバー (es01、es02、es03 ノード) を運用する

構成ファイルを操作し、ESコア構成ファイル内のクラスターの名前の値を同じになるように変更します。

  1. つまり、cluster.name を my-application に変更します。
  2. node.name をそれぞれ次のように変更します: es-node1、es-node2、es-node3
    vim /usr/local/elasticsearch-7.4.2/config/elasticsearch.yml
    ここに画像の説明を挿入します
  3. 3 台のマシンはすべてマスターが有効になっており、データ
    マスター: 将来マスター ノードになれることを示します
    。 データ: ドキュメント データを保存するために使用されます。
node.master: true
node.data: true
  1. 3 つのステーションすべてにノード情報を設定します。
    discovery.seed_hosts: ["192.168.92.110", "192.168.92.111","192.168.92.112"]
    ここに画像の説明を挿入します

2.3 構成情報の表示

  1. cd /usr/local/elasticsearch-7.4.2/config/
  2. more elasticsearch.yml | grep ^[^#]
    ここに画像の説明を挿入します

2.4 ESクラスタの起動

ユーザー esuser を個別に入力します
su esuser
./usr/local/elasticsearch-7.4.2/bin/elasticsearch
ここに画像の説明を挿入します

2.5 ESクラスターのテスト

ここに画像の説明を挿入します

4. ik中国語単語セグメンター

ikをインストールする

ik 中国語単語セグメンターと ES のバージョンは一貫している必要があり、インストール方法は同じです。

1. ik 中国語単語セグメンター (バージョン 6.4.3) をインストールします。

zip ファイルをサーバーにアップロードします
ここに画像の説明を挿入します

2.解凍してelasticsearchプラグインのikフォルダーに置きます。

yum install -y unzip zipzip ツールをインストールします。すでにインストールされている場合はスキップできます。
unzip elasticsearch-analysis-ik-6.4.3.zip -d /usr/local/elasticsearch-6.4.3/plugins/ik
ここに画像の説明を挿入します

3. ES の ik ディレクトリに入ります

cd /usr/local/elasticsearch-6.4.3/plugins/ik

4.ESを再起動する

jps
kill ***
su esuser
cd /usr/local/elasticsearch-6.4.3/bin
./elasticsearch -d

ik 中国語単語セグメンターを使用する

2.1 単語セグメンタ: ik_max_word

この単語セグメンターは、テキストを最も細かい粒度で分割します。たとえば、「中華人民共和国国歌」を「
中華人民共和国」、「中華人民共和国」、「中国」、「中国語」、「人民共和国」に分割します。中華民国」、「人民」、「人民」、「人民」、「共和国」、「共和国」、「和」、「国」、「国歌」
ここに画像の説明を挿入します

2.1 トークナイザー: ik_smart

このトークナイザーはテキストを最も粗い粒度に分割します。

ここに画像の説明を挿入します

5. Logstash データの同期

1.logstash の概要

Logstash は、リアルタイム パイプライン機能を備えたオープンソース データ収集エンジンです。Logstash は、異種データ ソースからのデータを動的に統合し、選択した宛先にデータを標準化します。
Logstash は、複数のデータ ソースから同時にデータを取得し、変換して、お気に入りの「ストレージ」に送信できるオープン ソースのサーバー側データ処理パイプラインです。(もちろん、私のお気に入りは Elasticsearch です)

データ収集: Elasticsearch をデータベースから収集して、
同期境界として ID (推奨されません。変更されたデータは認識されません) または update_time を自動インクリメントします。
プラグイン logstash-input-jdbc を通じて直接使用できます。 Elasticsearch の新バージョンと統合される
logstash を使用する場合 Elasticsearch のバージョン番号と一致するようにする

2.logstashのインストール

2.1 (前提条件は jdk がインストールされていることです) logstash、mysql ドライバーをアップロードします

ここに画像の説明を挿入します

2.2 logstash 同期構成

  1. logstash を解凍します。tar -zxvf logstash-6.4.3.tar.gz

  2. logstash を移動します。mv logstash-6.4.3 /usr/local/

  3. このディレクトリを入力してください:cd /usr/local/logstash-6.4.3/

  4. フォルダー同期を作成し、関連する同期構成をこのフォルダーの下に配置します。mkdir sync

  5. 構成ファイルを作成します (後で編集するので、ここで作成します)。vim logstash-db-sync.conf
    ![ここに画像の説明を挿入](https://img-blog.csdnimg.cn/ea250304a4534c6a91697eb0ddcaf644.png

  6. データベースドライバーを現在のディレクトリ (cp /home/software/mysql-connector-java-5.1.41.jar) にコピーします。
    ここに画像の説明を挿入します

  7. SQL ストレージ ファイルを作成します: foodie-items.sql

    SELECT
    		i.id AS itemId,
    		i.item_name AS itemName,
    		i.sell_counts AS sellCounts,
    		ii.url AS imgUrl,
    		tempSpec.price_discount AS price,
    		i.updated_time AS updated_time
    FROM items i
    LEFT JOIN
    		items_img ii
    ON
    		i.id = ii.item_id
    LEFT JOIN
    		 (SELECT item_id,MIN(price_discount) as price_discount
    				FROM items_spec
    				GROUP BY item_id
    		 ) tempSpec
    ON i.id = tempSpec.item_id
    WHERE
    		ii.is_main = 1
    		AND 
    		i.updated_time >= :sql_last_value
    
    
  8. 構成ファイル logstash-db-sync.conf を変更します。vim logstash-db-sync.conf

input {
    
    
    jdbc {
    
    
        # 设置 MySql/MariaDB 数据库url以及数据库名称
        jdbc_connection_string => "jdbc:mysql://192.168.92.110:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"
        # 用户名和密码
        jdbc_user => "root"
        jdbc_password => "root"
        # 数据库驱动所在位置,可以是绝对路径或者相对路径
        jdbc_driver_library => "/usr/local/logstash-6.4.3/sync/mysql-connector-java-5.1.41.jar"
        # 驱动类名
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        # 开启分页
        jdbc_paging_enabled => "true"
        # 分页每页数量,可以自定义
        jdbc_page_size => "1000"
        # 执行的sql文件路径
        statement_filepath => "/usr/local/logstash-6.4.3/sync/foodie-items.sql"
        # 设置定时任务间隔  含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务
        schedule => "* * * * *"
        # 索引类型
        type => "_doc"
        # 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件
        use_column_value => true
        # 记录上一次追踪的结果值
        last_run_metadata_path => "/usr/local/logstash-6.4.3/sync/track_time"
        # 如果 use_column_value 为true, 配置本参数,追踪的 column 名,可以是自增id或者时间
        tracking_column => "updated_time"
        # tracking_column 对应字段的类型
        tracking_column_type => "timestamp"
        # 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录
        clean_run => false
        # 数据库字段名称大写转小写
        lowercase_column_names => false
    }
}
output {
    
    
    elasticsearch {
    
    
        # es地址
        hosts => ["192.168.92.110:9200"]
        # 同步的索引名
        index => "foodie-items"
        # 设置_docID和数据库中的id保持相同
        document_id => "%{id}"
        # document_id => "%{itemId}"
    }
    # 日志输出
    stdout {
    
    
        codec => json_lines
    }
}

2.3 ログスタッシュを起動する

bin ディレクトリを入力します。cd /usr/local/logstash-6.4.3/bin

logstash を開始します:./logstash -f /usr/local/logstash-6.4.3/sync/logstash-db-sync.conf
バックグラウンドで開始します:nohup ./logstash -f /usr/local/logstash-6.4.3/sync/logstash-db-sync.conf > logstash.log 2>&1 &
ここに画像の説明を挿入します

ここに画像の説明を挿入します

Logstash は新しく追加および変更されたデータのみを同期できますが、データベースで削除されたデータは ES に同期されないため、データベースで削除されたデータは
時刻を更新することによってのみ ES で論理的に更新されます。

6. ElasticSearch 視覚化プラグインをインストールします: es-head

1. es-headerをダウンロードして解凍します。

ESヘッダーのダウンロード
ここに画像の説明を挿入します

2.node.jsをインストールする

node.jsのダウンロード。
ダウンロードしてインストールするだけです
ここに画像の説明を挿入します

3.node.jsで以下のコマンドを実行します。

es-header ディレクトリを入力します (Shift キーを押しながらディレクトリ内で右クリックし、PowerShell ウィンドウを開きます)
npm install
ここに画像の説明を挿入します
npm run start
ここに画像の説明を挿入します

4. クロスドメインの設定

http://localhost:9100/ にアクセスしてクロスドメインを見つけます
ここに画像の説明を挿入します

  • 次のように es core 構成ファイルと elasticsearch.yml を入力して、クロスドメイン構成を追加します。
http.cors.enabled: true
http.cors.allow-origin: "*"

ここに画像の説明を挿入します

5. テスト

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_38055805/article/details/128953343