ElasticSearch-Logstash6.0.0のインストールとmysqlデータのESへのインポート

Logstashのインストール(6.0.0)

  1. logstashをLinuxにダウンロードします。BaiduCloudLinkを
    直接提供します
    :https
    ://pan.baidu.com/s/13M3OdoG3wqcpdebUUSwoHQ抽出コード:5aaq
  2. 解凍(解凍)
unzip logstash-6.0.0.zip
  1. 後で使用するmysqljarパッケージをダウンロードします(公式Webサイトにアクセスしてダウンロードすることもできます)
    リンク:https
    ://pan.baidu.com/s/1TpFEWE9M81tNNn_uXkW-3Q抽出コード:cg2d

mysqlデータをESにインポートします

1.カスタム構成ファイルを追加します(logstash / configの下に置きます)

vi logstash-mysql.conf

次のコンテンツを追加します。

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
    
    
  jdbc{
    
    
    jdbc_connection_string => "jdbc:mysql://192.168.xxx.xxx:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&tinyInt1isBit=false"
    jdbc_user => "xxx"
    jdbc_password => "xxx"
    jdbc_driver_library => "/opt/local_software/logstash-6.0.0/config/mysql-connector-java-5.1.39.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
    jdbc_default_timezone =>"Asia/Shanghai"
    statement_filepath => "/opt/local_software/logstash-6.0.0/config/sql/face.sql"
    schedule => "* * * * *"
    # type => "mycat"
    # 是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    record_last_run => true
    # 是否需要记录某个column 的值,如果record_last_run为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true
    # 如果 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的. 一般是mysql主键
    tracking_column => "id"
    tracking_column_type => "numeric"
    last_run_metadata_path => "./face_last_id"
    lowercase_column_names => false
  }
}

filter {
    
    
  if [sex] == 1 {
    
    
     mutate {
    
    
       add_field => {
    
     "tags" => "男"}
     }
  }
  if [sex] == 2 {
    
    
     mutate {
    
    
       add_field => {
    
     "tags" => "女"}
     }
  }
  if [sex] == 0 {
    
    
     mutate {
    
    
       add_field => {
    
     "tags" => "未知"}
     }
  }
}

output {
    
    
  elasticsearch {
    
    
    hosts => ["http://192.168.135.237:9201"]
    #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    index => "face_card"
    document_id => "%{id}"
    #user => "elastic"
    #password => "changeme"
  }
  stdout {
    
    
     codec => json_lines
  }

注:
変更する必要がある主なものは次のとおりです。

  1. jdbc:mysql://192.168.xxx.xxx:3306 / test?
    IP、ポート、およびポートの背後にあるデータベースの名前を変更します(ここでテストしています)
  2. jdbc_user => "データベースユーザー名"
  3. jdbc_password => "データベースパスワード"
  4. jdbc_driver_library:上記でダウンロードしたmysqljarパッケージの場所
  5. statement_filepath => "/opt/local_software/logstash-6.0.0/config/sql/face.sql"
    これは実行する必要のあるsqlスクリプトであり、logstashはsqlに従ってデータをmysqlにインポートします(sqlは引き続き記述する必要があります) 、一貫して私に従うことができます)
  6. 出力:hosts => ["http://192.168.xxx.xxx:9201"]を独自のESip + portに変更します

2.configの下にディレクトリを作成します

mkdir sql

3. SQLファイルを作成します(SQLディレクトリの下)

vi face.sql

次のコンテンツを追加します。

select * from face_card where id > :sql_last_value order by id limit 1000

4.対応するデータベース(SQLファイルのテーブル名に対応)にテーブルを作成します。

CREATE TABLE `face_card` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `sex` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

次のデータを追加します(単純です)
ここに画像の説明を挿入
。5。スクリプトを実行します
。logstash-6.0.0ディレクトリでコマンドを実行します

./bin/logstash -f ./config/face.conf

6.長時間待機した後、次の図に示すように、SQLのインポートが成功したことがわかります。
ここに画像の説明を挿入

mysqlによってインポートされたデータを確認します

kibanaを使用するか(kibanaが構成されている場合)、postman
使用してkibanaで確認
ここに画像の説明を挿入
できます。次のコマンドを入力します。

GET /face_card/_search

答えを得た:

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 4,
    "max_score": 1,
    "hits": [
      {
        "_index": "face_card",
        "_type": "doc",
        "_id": "2",
        "_score": 1,
        "_source": {
          "name": "yy",
          "@version": "1",
          "id": 2,
          "@timestamp": "2020-07-29T08:39:01.606Z",
          "sex": 1,
          "tags": [
            "男"
          ]
        }
      },
      {
        "_index": "face_card",
        "_type": "doc",
        "_id": "4",
        "_score": 1,
        "_source": {
          "name": "ee",
          "@version": "1",
          "id": 4,
          "@timestamp": "2020-07-29T08:39:01.614Z",
          "sex": 2,
          "tags": [
            "女"
          ]
        }
      },
      {
        "_index": "face_card",
        "_type": "doc",
        "_id": "1",
        "_score": 1,
        "_source": {
          "name": "ljj",
          "@version": "1",
          "id": 1,
          "@timestamp": "2020-07-29T08:39:01.604Z",
          "sex": 0,
          "tags": [
            "未知"
          ]
        }
      },
      {
        "_index": "face_card",
        "_type": "doc",
        "_id": "3",
        "_score": 1,
        "_source": {
          "name": "dd",
          "@version": "1",
          "id": 3,
          "@timestamp": "2020-07-29T08:39:01.614Z",
          "sex": 0,
          "tags": [
            "未知"
          ]
        }
      }
    ]
  }
}

mysqlの4つのデータすべてが書き込まれている、つまり、Logstashを使用してデータが正常にインポートされていることがわかります。

おすすめ

転載: blog.csdn.net/Zong_0915/article/details/107669368