Kibana-loading-sample-data

提供:Dev Guides
移動先:案内検索

Kibana-サンプルデータの読み込み

logstashからelasticsearchにデータをアップロードする方法を見てきました。 ここでは、logstashとelasticsearchを使用してデータをアップロードします。 ただし、使用する必要がある日付、経度、緯度のフィールドを持つデータについては、今後の章で学習します。 CSVファイルがない場合は、Kibanaにデータを直接アップロードする方法も確認します。

この章では、次のトピックを扱います-

  • Elasticsearchで日付、経度、緯度のフィールドを持つLogstashアップロードデータを使用する
  • 開発ツールを使用してバルクデータをアップロードする

Elasticsearchにフィールドを持つデータにLogstashアップロードを使用する

CSV形式のデータを使用します。これは、分析に使用できるデータを扱うKaggle.comから取得されます。

ここで使用されるhttps://www.kaggle.com/HackandHealth/home-medical-visits-healthcare [在宅医療]データは、Kaggle.comサイトから取得されます。

以下は、CSVファイルで利用可能なフィールドです-

["Visit_Status","Time_Delay","City","City_id","Patient_Age","Zipcode","Latitude","Longitude",
"Pathology","Visiting_Date","Id_type","Id_personal","Number_Home_Visits","Is_Patient_Minor","Geo_point"]

Home_visits.csvは次のとおりです-

訪問

以下はlogstashで使用されるconfファイルです-

input {
   file {
      path => "C:/kibanaproject/home_visits.csv"
      start_position => "beginning"
      sincedb_path => "NUL"
   }
}
filter {
   csv {
      separator => ","
      columns =>
      ["Visit_Status","Time_Delay","City","City_id","Patient_Age",
      "Zipcode","Latitude","Longitude","Pathology","Visiting_Date",
      "Id_type","Id_personal","Number_Home_Visits","Is_Patient_Minor","Geo_point"]
   }
   date {
      match => ["Visiting_Date","dd-MM-YYYY HH:mm"]
      target => "Visiting_Date"
   }
   mutate {convert => ["Number_Home_Visits", "integer"]}
   mutate {convert => ["City_id", "integer"]}
   mutate {convert => ["Id_personal", "integer"]}
   mutate {convert => ["Id_type", "integer"]}
   mutate {convert => ["Zipcode", "integer"]}
   mutate {convert => ["Patient_Age", "integer"]}
   mutate {
      convert => { "Longitude" => "float" }
      convert => { "Latitude" => "float" }
   }
   mutate {
      rename => {
         "Longitude" => "[location][lon]"
         "Latitude" => "[location][lat]"
      }
   }
}
output {
   elasticsearch {
      hosts => ["localhost:9200"]
      index => "medicalvisits-%{+dd.MM.YYYY}"
   }
   stdout {codec => json_lines }
}

デフォルトでは、logstashはすべてがelasticsearchに文字列としてアップロードされるとみなします。 CSVファイルに日付フィールドがある場合、日付形式を取得するには以下を実行する必要があります。

日付フィールド用-

date {
   match => ["Visiting_Date","dd-MM-YYYY HH:mm"]
   target => "Visiting_Date"
}

地理的位置の場合、elasticsearchはと同じを理解します-

"location": {
   "lat":41.565505000000044,
   "lon": 2.2349995750000695
}

したがって、elasticsearchが必要とする形式で経度と緯度があることを確認する必要があります。 そのため、最初に経度と緯度を浮動小数点に変換し、後で名前を変更して、 _ lat_ および lonlocation jsonオブジェクトの一部として使用できるようにする必要があります。 同じためのコードはここに示されています-

mutate {
      convert => { "Longitude" => "float" }
      convert => { "Latitude" => "float" }
   }
mutate {
   rename => {
      "Longitude" => "[location][lon]"
      "Latitude" => "[location][lat]"
   }
}

フィールドを整数に変換するには、次のコードを使用します-

mutate {convert => ["Number_Home_Visits", "integer"]}
mutate {convert => ["City_id", "integer"]}
mutate {convert => ["Id_personal", "integer"]}
mutate {convert => ["Id_type", "integer"]}
mutate {convert => ["Zipcode", "integer"]}
mutate {convert => ["Patient_Age", "integer"]}

フィールドに注意が払われたら、次のコマンドを実行してelasticsearchにデータをアップロードします-

  • Logstash binディレクトリ内に移動し、次のコマンドを実行します。
logstash -f logstash_homevisists.conf
  • 完了したら、以下に示すようにelasticsearchのlogstash confファイルに記載されているインデックスが表示されるはずです-

logstash conf

アップロードされた上記のインデックスにインデックスパターンを作成し、視覚化の作成にさらに使用できます。

開発ツールを使用してバルクデータをアップロードする

Kibana UIからDev Toolsを使用します。 開発ツールは、Logstashを使用せずにElasticsearchにデータをアップロードするのに役立ちます。 開発ツールを使用して、Kibanaで必要なデータを投稿、配置、削除、検索できます。

このセクションでは、サンプルデータをKibana自体にロードしようとします。 これを使用してサンプルデータを練習し、Kibanaの機能を操作して、Kibanaをよく理解できます。

次のURLからjsonデータを取得し、それをKibanaにアップロードします。 同様に、サンプルのJSONデータをKibana内にロードすることもできます。

サンプルデータのアップロードを開始する前に、elasticsearchで使用するインデックス付きのjsonデータが必要です。 logstashを使用してアップロードする場合、logstashはインデックスの追加に注意し、ユーザーはelasticsearchで必要なインデックスを気にする必要はありません。

通常のJSONデータ

[
   {"type":"act","line_id":1,"play_name":"Henry IV",

   "speech_number":"","line_number":"","speaker":"","text_entry":"ACT I"},
   {"type":"scene","line_id":2,"play_name":"Henry IV",
   "speech_number":"","line_number":"","speaker":"","text_entry":"SCENE I.London. The palace."},
   {"type":"line","line_id":3,"play_name":"Henry IV",
   "speech_number":"","line_number":"","speaker":"","text_entry":
   "Enter KING HENRY, LORD JOHN OF LANCASTER, the
   EARL of WESTMORELAND, SIR WALTER BLUNT, and others"}
]

Kibanaで使用するjsonコードは、次のようにインデックス付けする必要があります-

{"index":{"_index":"shakespeare","_id":0}}
{"type":"act","line_id":1,"play_name":"Henry IV",
"speech_number":"","line_number":"","speaker":"","text_entry":"ACT I"}
{"index":{"_index":"shakespeare","_id":1}}
{"type":"scene","line_id":2,"play_name":"Henry IV",
"speech_number":"","line_number":"","speaker":"",
"text_entry":"SCENE I. London. The palace."}
{"index":{"_index":"shakespeare","_id":2}}
{"type":"line","line_id":3,"play_name":"Henry IV",
"speech_number":"","line_number":"","speaker":"","text_entry":
"Enter KING HENRY, LORD JOHN OF LANCASTER, the EARL
of WESTMORELAND, SIR WALTER BLUNT, and others"}

jsonfileには追加データがあります-* \ {"index":\ {"_ index": "nameofindex"、 "_ id":key}} *。

elasticsearchと互換性のあるサンプルjsonファイルを変換するには、ここでelasticsearchが必要とする形式に与えられたjsonファイルを出力するPHPの小さなコードがあります-

PHPコード

<?php
   $myfile = fopen("todo.json", "r") or die("Unable to open file!");//your json
   file here
   $alldata = fread($myfile,filesize("todo.json"));
   fclose($myfile);
   $farray = json_decode($alldata);
   $afinalarray = [];
   $index_name = "todo";
   $i=0;
   $myfile1 = fopen("todonewfile.json", "w") or die("Unable to open file!");//
   writes a new file to be used in kibana dev tool
   foreach ($farray as $a => $value) {
      $_index = json_decode('{"index": {"_index": "'.$index_name.'", "_id": "'.$i.'"}}');
      fwrite($myfile1, json_encode($_index));
      fwrite($myfile1, "\n");
      fwrite($myfile1, json_encode($value));
      fwrite($myfile1, "\n");
      $i++;
   }
?>

[[1]] jsonファイルを取得し、phpコードを使用してKibanaでアップロードする必要がある形式に変換しました。

サンプルデータをロードするには、以下に示すように開発ツールタブを開きます-

開発ツール

上記のコンソールを使用します。 PHPコードで実行した後に取得したJSONデータを取得します。

jsonデータをアップロードするために開発ツールで使用されるコマンドは-

POST _bulk

作成するインデックスの名前は_todo_であることに注意してください。

jsonデータのアップロード

開発ツールインデックス

緑色のボタンをクリックすると、データがアップロードされ、次のようにelasticsearchでインデックスが作成されているかどうかを確認できます-

作成されたインデックス

次のように、開発ツール自体で同じことを確認できます-

コマンド-

GET/_cat/indices

開発ツールコマンド

あなたがあなたのindex:todoで何かを検索したい場合は、以下に示すようにそれを行うことができます-

開発ツールのコマンド

GET/todo/_search

開発ツール検索

上記の検索の出力は以下のとおりです-

開発ツールの出力

todoindexに存在するすべてのレコードを提供します。 取得する合計レコードは200です。

Todoインデックスでレコードを検索する

私たちは次のコマンドを使用してそれを行うことができます-

GET/todo/_search
{
   "query":{
      "match":{
         "title":"delectusautautem"
      }
   }
}

レコードtodoインデックス

レコードを取得

指定したタイトルに一致するレコードを取得できます。