Kibana - Memuat Data Sampel

Kami telah melihat cara mengunggah data dari logstash ke elasticsearch. Kami akan mengunggah data menggunakan logstash dan elasticsearch di sini. Tetapi tentang data yang memiliki tanggal, bujur dan garis lintang yang perlu kita gunakan, kita akan belajar di bab-bab selanjutnya. Kita juga akan melihat cara mengupload data langsung di Kibana, jika kita tidak memiliki file CSV.

Dalam bab ini, kami akan membahas topik-topik berikut -

  • Menggunakan data unggahan Logstash yang memiliki bidang tanggal, bujur dan lintang di Elasticsearch
  • Menggunakan alat Pengembang untuk mengunggah data massal

Menggunakan unggahan Logstash untuk data yang memiliki bidang di Elasticsearch

Kami akan menggunakan data dalam bentuk format CSV dan diambil dari Kaggle.com yang berhubungan dengan data yang dapat Anda gunakan untuk analisis.

Data kunjungan medis ke rumah yang akan digunakan di sini diambil dari situs Kaggle.com.

Berikut ini adalah bidang yang tersedia untuk file 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 adalah sebagai berikut -

Berikut ini adalah file conf yang akan digunakan dengan logstash -

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

Secara default, logstash menganggap semua yang akan diunggah di elasticsearch sebagai string. Jika file CSV Anda memiliki kolom tanggal yang perlu Anda lakukan berikut ini untuk mendapatkan format tanggal.

For date field −

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

Dalam kasus lokasi geografis, elasticsearch memahami hal yang sama seperti -

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

Jadi kita perlu memastikan bahwa kita memiliki Bujur dan Lintang dalam format yang dibutuhkan elasticsearch. Jadi pertama-tama kita perlu mengubah bujur dan lintang menjadi float dan kemudian mengganti namanya sehingga tersedia sebagai bagian darilocation json keberatan dengan lat dan lon. Kode yang sama ditunjukkan di sini -

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

Untuk mengonversi bidang menjadi bilangan bulat, gunakan kode berikut -

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"]}

Setelah bidang ditangani, jalankan perintah berikut untuk mengunggah data di elasticsearch -

  • Masuk ke dalam direktori Logstash bin dan jalankan perintah berikut.
logstash -f logstash_homevisists.conf
  • Setelah selesai Anda akan melihat indeks yang disebutkan di file conf logstash di elasticsearch seperti yang ditunjukkan di bawah ini -

Sekarang kita dapat membuat pola indeks di atas indeks yang diunggah dan menggunakannya lebih lanjut untuk membuat visualisasi.

Menggunakan Alat Pengembang untuk Mengunggah Data Massal

Kami akan menggunakan Dev Tools dari Kibana UI. Alat Dev berguna untuk mengunggah data di Elasticsearch, tanpa menggunakan Logstash. Kita bisa memposting, meletakkan, menghapus, mencari data yang kita inginkan di Kibana menggunakan Dev Tools.

Pada bagian ini, kami akan mencoba memuat data sampel di Kibana itu sendiri. Kita bisa menggunakannya untuk berlatih dengan data sampel dan bermain-main dengan fitur Kibana untuk mendapatkan pemahaman yang baik tentang Kibana.

Mari kita ambil data json dari url berikut dan unggah yang sama di Kibana. Demikian pula, Anda dapat mencoba data json sampel apa pun untuk dimuat di dalam Kibana.

Sebelum kita mulai mengunggah data sampel, kita perlu memiliki data json dengan indeks untuk digunakan dalam elasticsearch. Saat kami menguploadnya menggunakan logstash, logstash akan menambahkan indeks dengan hati-hati dan pengguna tidak perlu repot tentang indeks yang dibutuhkan oleh elasticsearch.

Data Json Normal

[
   {"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"}
]

Kode json yang digunakan dengan Kibana harus diindeks sebagai berikut -

{"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"}

Perhatikan bahwa ada data tambahan yang masuk ke jsonfile -{"index":{"_index":"nameofindex","_id":key}}.

Untuk mengonversi sampel file json yang kompatibel dengan elasticsearch, di sini kami memiliki kode kecil dalam php yang akan menampilkan file json yang diberikan ke format yang diinginkan elasticsearch -

Kode 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++;
   }
?>

Kami telah mengambil file json rencana dari https://jsonplaceholder.typicode.com/todos dan gunakan kode php untuk mengonversi ke format yang perlu kita unggah di Kibana.

Untuk memuat data sampel, buka tab alat pengembang seperti yang ditunjukkan di bawah ini -

Kami sekarang akan menggunakan konsol seperti yang ditunjukkan di atas. Kami akan mengambil data json yang kami dapatkan setelah menjalankannya melalui kode php.

Perintah yang akan digunakan di alat dev untuk mengunggah data json adalah -

POST _bulk

Perhatikan bahwa nama indeks yang kita buat adalah todo .

Setelah Anda mengklik tombol hijau data diunggah, Anda dapat memeriksa apakah indeks dibuat atau tidak di elasticsearch sebagai berikut -

Anda dapat memeriksa hal yang sama di alat dev itu sendiri sebagai berikut -

Command −

GET /_cat/indices

Jika Anda ingin mencari sesuatu di index: todo, Anda dapat melakukannya seperti yang ditunjukkan di bawah ini -

Command in dev tool

GET /todo/_search

Output dari pencarian di atas adalah seperti di bawah ini -

Ini memberikan semua catatan yang ada di todoindex. Total rekor yang kami dapatkan adalah 200.

Cari Record in todo Index

Kita dapat melakukannya dengan menggunakan perintah berikut -

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

Kami dapat mengambil rekaman yang sesuai dengan judul yang kami berikan.