Categories: ELKLinux

Cara Melakukan Query pada Elasticsearch

Elasticsearch adalah sebuah database non relational yang fokus untuk digunakan sebagai tempat menyimpan data search engine. Hal yang menarik dari Elasticsearch adalah semua query dilakukan menggunakan http request. Data yang disimpan pada elasticsearch berbentuk json.

Konsep URL pada Elasticsearch

Secara default, URL pada elasticsearch memiliki format seperti berikut:

"http://localhost:9000/<index>/<type>/<id>"

Ketika dipadankan dengan relational database, maka ada beberapa kemiripan:

  1. <index> pada URL di atas dapat dianggap sebagai database pada relational database
  2. <type> pada URL di atas dapat dianggap sebagai tabel pada relational database
  3. <id> berperan sebagai primary id

Cara Melakukan Create dan Update Data

Create data pada elasticsearch memerlukan http verb POST ataupun PUT. Perbedaan antara pemakaian POST dengan PUT adalah POST hanya digunakan untuk membuat data baru. Ketika menggunakan POST dengan <id> yang sama, maka data tidak akan bisa dibuat. PUT dapat digunakan untuk mengupdate data. Apabila <id> sama, maka PUT akan mengupdate data yang sudah ada. Berikut adalah contoh perintah untuk create data

curl -XPOST 'http://localhost:9200/blog/article/1' -d '{"title": "New version of Elasticsearch released!", "content": "Version 2.2 released today!", "priority": 10, "tags": ["announce", "elasticsearch", "release"] }'

Ketika berhasil, akan muncul respon seperti berikut

{
  "_index" : "blog",
  "_type" : "article",
  "_id" : "1",
  "_version" : 1,
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "created" : true
}

Ketika gagal karena ID nya sudah ada, respon yang muncul seperti berikut

{
  "_index" : "blog",
  "_type" : "article",
  "_id" : "1",
  "_version" : 2,
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "created" : false
}

Perhatikan bahwa data tidak berhasil dibuat (“created” : false).

Untuk mengubah data, gunakan PUT. Misalkan kita ingin mengubah nilai title menjadi Ini judul baru. Maka jalankan perintah berikut

curl -XPUT 'http://localhost:9200/blog/article/1?pretty' -d '{"title": "Ini Judul Baru", "content": "Version 2.2 released today!", "priority": 10, "tags": ["announce", "elasticsearch", "dev"] }'

Respon yang muncul seperti berikut.

{
  "_index" : "blog",
  "_type" : "article",
  "_id" : "1",
  "_version" : 3,
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "created" : false
}

 

Cara Mendapatkan Data

Untuk mendapatkan data yang sudah disimpan, maka digunakan http verb GET.

curl -XGET 'http://localhost:9200/blog/article/1?pretty'

Ketika data belum diupdate, maka hasil yang muncul seperti berikut.

{
  "_index" : "blog",
  "_type" : "article",
  "_id" : "1",
  "_version" : 11,
  "found" : true,
  "_source" : {
    "title" : "New version of Elasticsearch released!",
    "content" : "Version 2.2 released today!",
    "priority" : 10,
    "tags" : [ "announce", "elasticsearch", "release" ]
  }
}

Ketika data sudah diupdate, data yang muncul menjadi seperti berikut.

{
  "_index" : "blog",
  "_type" : "article",
  "_id" : "1",
  "_version" : 3,
  "found" : true,
  "_source" : {
    "title" : "Ini Judul Baru",
    "content" : "Version 2.2 released today!",
    "priority" : 10,
    "tags" : [ "announce", "elasticsearch", "release" ]
  }
}

Menghapus Data

Untuk menghapus data, gunakan http verb DELETE. Perintah untuk menghapus data yang telah kita masukkan adalah seperti berikut.

curl -XDELETE 'http://localhost:9200/blog/article/1?pretty'

Perintah di atas menghasilkan respon seperti berikut.

{
  "found" : true,
  "_index" : "blog",
  "_type" : "article",
  "_id" : "1",
  "_version" : 4,
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  }
}

 

[1]

Akhmad Fakhoni Listiyan Dede

Share
Published by
Akhmad Fakhoni Listiyan Dede

Recent Posts

Mengimplementasikan AI untuk Melakukan Review pada Pull Request Github

Halo semua Github memiliki fitur terkait Pull Request yang cukup luar biasa, yaitu dapat melakukan…

6 months ago

Install kubernetes cluster using kubeadm

Hello everyone! 👋 Welcome to our step-by-step guide on using kubeadm to install Kubernetes. It's…

1 year ago

Meningkatkan Efisiensi Memory Proxmox Lebih dari 20%

Proxmox adalah hypervisor yang populer digunakan karena penggunaannya yang cukup simpel jika dibandingkan dengan hypervisor…

4 years ago

Longhorn Failed Upgrade from v0.8.1 to v1.0.0 caused by pv created before v0.6.2

This post is mirror of https://forums.rancher.com/t/failed-upgrade-from-v0-8-1-to-v1-0-0-caused-by-pv-created-before-v0-6-2/17586 I scale down all pods that has vpc to…

4 years ago

Cara Setup Network Ubuntu Server 18.04 pada Proxmox

Ubuntu Konfigurasi network pada Ubuntu Server 18.04 berbeda dengan ubuntu versi sebelumnya. Versi sebelumnya menggunakan…

5 years ago

VSCode Terminal Font Fix on MacOS

For detailed problems, see https://notulensiku.com/2019/02/fix-integrated-terminal-font-vscode/ To solve on mac, you need to install powerline fonts…

5 years ago