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