Elasticsearch sangat membantu apabila anda punya member yang cukup banyak di website / aplikasi anda, karena elasticsearch membuat kinerja database anda menjadi lebih ringan. Elasticsearch hampir sama dengan konsep NoSql dimana tidak ada relation antar tablenya. Versi sekarang yang tersedia adalah 1.4.1 dimana pembuatan elasticsearch menggunakan Java dan sebenernya elasticsearch pengembangan dari Lucent Search. Karena plugin mysql river saat ini support hanya di versi 1.3.4 maka kita download versi 1.3.4 di http://www.elasticsearch.org/downloads/1-3-4/

Disini saya akan mencoba untuk melakukan instalasi dan konfigurasi dengan database MySQL. Tapi pastikan anda update java jdk anda ke versi terbaru, silahkan download java disini.  Langsung saja gan, kita ke website si empunya elasticsearch, kita download elasticsearch versi saat ini bisa didownload disini. setelah download extract kemudian taruh di folder kesukaan anda, contoh yang saya punya adalah di direktory "C:\elasticsearch-1.3.4".

contoh awal extract folder plugins belum tersedia, setelah anda install mysql river baru tersedia.

setelah itu masuk ke cmd, atau klik run ketik "cmd", dan masuk ke folder bin "cd C:\elasticsearch-1.3.4\bin" kemudian enter. sekarang kita akan install plugin mysql river, masih di console dengan command "plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.1.0.2/elasticsearch-river-jdbc-1.1.0.2-plugin.zip"

Kalau ada error JAVA_HOME must be set artinya anda harus set terlebih dahulu Java anda di environment variable, dengan cara masuk ke control panel kemudian klik "system" kemudian di menu kiri klik "Advanced menu settings" di tab "Advanced" klik tombol "Environment Variables". Dibawah "System variables" klik tombol "New...". seperti contoh pada gambar dibawah ini:

anda hanya perlu menuliskan Variable name : "JAVA_HOME" dan varible values sesuai dengan path instalasi Java anda contohnya yang sekarang saya punya adalah "C:\Program Files\Java\jdk1.8.0_25"

setelah itu klik "OK" dan biasanya butuh restart komputer.

setelah anda berhasil melakukan install jdbc river dengan command seperti yang diatas dengan command "plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.1.0.2/elasticsearch-river-jdbc-1.1.0.2-plugin.zip", maka kita akan lihat struktur di folder "plugins" ada penambahan folder "jdbc"

 

Untuk koneksi antara elasticsearch dengan mysql kita butuh tools lagi:

  1. MYSQL JDBC Driver, karena elasticsearch dibuat menggunakan Java, maka kita wajib copy source driver ke dalam local komputer kita, sebagai contoh dalam penggunaan windows 7 maka bisa didownload disini. Install MySQL JDBC Driver , setelah itu masuk ke folder instalasi biasanya ada di folder "C:\Program Files (x86)\MySQL\MySQL Connector J" disitu kita bisa lihat file ".jar" contohnya "mysql-connector-java-5.1.34-bin.jar" copy file tersebut kedalam folder elasticsearch -> plugins -> jdbc, contoh "C:\elasticsearch-1.3.4\plugins\jdbc", seperti pada gambar dibawah ini. 
  2. Kita butuh semacam phpmyadmin nya elasticsearch, untuk itu bisa didownload disini. sense master sangat berguna dalah hal query dengan menggunakan port 9200, extract file tersebut kedalam document root anda atau kalau saya pakai xampp di folder "htdocs", kemudian buka di browser anda dengan address, contoh "http://localhost/sense-master"

Sekarang step yang terakhir, kita jalankan elasticsearch kita di console, buka console , masuk ke Run -> cmd:

ketik "cd  C:\elasticsearch-1.3.4\bin" kemudian ketik perintah "elasticsearch" dan enter tampilan akan seperti ini:

buka sense-master anda di browser favorite anda "http://localhost/sense-master" , server di pilih "localhost/9200". kemudian klik tanda panah warna hijau, kalau ada results berarti anda sudah berhasil :)

 

Sekarang kita akan buat satu database dan table katakanlah database "blog" dan table "blog". ini akan kita masukkan berdasarkan query sql

create database blog;

use blog;

CREATE TABLE `blog` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`image` VARCHAR(255) DEFAULT NULL,
`title` VARCHAR(255) NOT NULL,
`description` TEXT,
`publish` TINYINT(1) DEFAULT '0',
`userCreate` INT(11) DEFAULT NULL,
`userUpdate` INT(11) DEFAULT NULL,
`updateDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`createDate` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB;

 

 

Oke setelah itu yang perlu kita lakukan adalah buat index dan type yang akan kita buat meta table blog di elasticsearch di sense-master. contoh dibawah ini :

atau source code dibawah ini:

PUT /_river/tblblog/_meta
{
"type": "jdbc",
"jdbc": {
"driver": "com.mysql.jdbc.Driver",
"url": "jdbc:mysql://localhost:3306/blog",
"user": "root",
"password": "",
"sql": "SELECT *, id as _id from blog ",
"autocommit": true,
"strategy":"simple",
"index": "blogindex",
"type": "blogtype",
"bulk_size": 5000,
"max_bulk_requests": 30
}
}

 yang perlu diperhatikan disini adalah :

  1. index river : "_river"
  2. type river : "tblblog". usahakan selalu sama dengan table di mysql kita
  3. driver :  "com.mysql.jdbc.Driver", driver dari Mysql JDBC yang kita copy
  4. url :  driver jdbc, localhost adalah remote server anda bisa juga mengaktifkan by ip remote database anda "/" setelah itu nama database anda . contoh database saya adalah "blog"
  5. user : username dari mysql anda
  6. password : password dari mysql anda
  7. sql : query dari table "blog" usahakan "id as _id" jika anda ingin id sama dengan primary key dari elasticsearch
  8. yang lain anda bisa baca dokumentasi dari elasticsearch

Mencoba : anda bisa query di sense-master hasil / output yang akan anda keluarkan dengan command GET index type "_search"

contoh diatas :

GET /blogindex/blogtype/_search  

Note: untuk type geolocation anda harus put mapping terlebih dahulu sebelum put meta, yang akan mungkin saya bahas nanti di article selanjutnya

 

INSTAL DI LINUX UBUNTU/DEBIAN

sudo apt-get update
sudo apt-get install openjdk-7-jre-headless -y


echo 'deb http://packages.elasticsearch.org/elasticsearch/1.3/debian stable main' | sudo tee /etc/apt/sources.list.d/elasticsearch.list
sudo apt-get update
sudo apt-get -y install elasticsearch=1.3.4

masuk ke direktory elasticsearch
cd /usr/share/elasticsearch
install mysql plugin
./bin/plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.3.4.4/elasticsearch-river-jdbc-1.3.4.4-plugin.zip

download jdbc
curl -o mysql-connector-java-5.1.33.zip -L 'http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.33.zip/from/http://cdn.mysql.com/'
unzip mysql-connector-java-5.1.33.zip

copy file jar
cp mysql-connector-java-5.1.33/mysql-connector-java-5.1.33-bin.jar plugins/jdbc/ 
chmod 644 plugins/jdbc/

start elasticsearch dengan perintah

sudo service elasticsearch stop

uninstall

sudo dpkg -r elasticsearch

Note : pastikan setting dimysql anda bind-address = 0.0.0.0

 

settingan file di elasticsearch di /etc/init.d/elasticsearch

! /bin/sh
### BEGIN INIT INFO
# Provides: elasticsearch
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts elasticsearch
# Description: Starts elasticsearch using start-stop-daemon
### END INIT INFO

ES_HOME=/usr/share/elasticsearch
ES_MIN_MEM=256m
ES_MAX_MEM=1g
DAEMON=$ES_HOME/bin/elasticsearch
NAME=elasticsearch
DESC=elasticsearch
PID_FILE=/var/run/$NAME.pid
LOG_DIR=/var/log/$NAME
DATA_DIR=/var/lib/$NAME
WORK_DIR=/tmp/$NAME
CONFIG_FILE=/etc/$NAME/elasticsearch.yml
DAEMON_OPTS="-p $PID_FILE -Des.config=$CONFIG_FILE -Des.path.home=$ES_HOME -Des.path.logs=$LOG_DIR -Des.path.data=$DATA_DIR -Des.path.work=$WORK_DIR"


test -x $DAEMON || exit 0

set -e

case "$1" in
start)
echo -n "Starting $DESC: "
mkdir -p $LOG_DIR $DATA_DIR $WORK_DIR
if start-stop-daemon --start --pidfile $PID_FILE --startas $DAEMON -- $DAEMON_OPTS
then
echo "started."
else
echo "failed."
fi
;;
stop)
echo -n "Stopping $DESC: "
if start-stop-daemon --stop --pidfile $PID_FILE
then
echo "stopped."
else
echo "failed."
fi
;;
restart|force-reload)
${0} stop
sleep 0.5
${0} start
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac

exit 0

 

 

jangan lupa tambahkan :

sudo update-rc.d elasticsearch defaults 95 10
sudo
/etc/init.d/elasticsearch start

 

Leave a Comment:



digital_ocean