Cara Melakukan Query pada Elasticsearch

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]

Leave A Comment