Elasticsearch adalah mesin pencari sumber terbuka berdasarkan Apache Lucene, menawarkan mesin pencari teks lengkap yang didistribusikan secara real-time dengan antarmuka web HTTP dan dokumen JSON bebas skema.
Elasticsearch dikembangkan di Jawa. Versi open-source Elasticsearch dirilis di bawah Lisensi Apache 2.0, dan versi komersial dirilis di bawah Elastic License. Saat ini, ini adalah mesin pencari perusahaan paling populer setelah Apache Solr.
Posting ini akan membantu Anda menginstal Elasticsearch di CentOS 8 / RHEL 8.
Prasyarat
Elasticsearch dibuat menggunakan Java, dan paketnya menyertakan versi paket OpenJDK yang berarti Anda tidak perlu menginstal Java secara terpisah untuk instalasi Elasticsearch. OpenJDK yang dibundel terletak di dalam direktori JDK dari direktori home Elasticsearch /usr/share/elasticsearch.
Instal Java
Untuk menggunakan versi Java Anda sendiri, instal Java versi LTS dan setel variabel lingkungan JAVA_HOME di sistem Anda.
BACA :Cara Menginstal Java di CentOS 8 / RHEL 8
Verifikasi versi Java yang diinstal pada sistem.
java -version
Keluaran:
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
Setel JAVA_HOME dengan perintah di bawah ini.
export JAVA_HOME=<JAVA_PATH>Setelah Anda menginstal Elasticsearch di sistem Anda, atur Java_HOME di file /etc/sysconfig/elasticsearch agar Elasticsearch menggunakan versi Java khusus.
Setup Elasticsearch Repository
Elastic menawarkan paket biner (rpm) pra-bangun untuk RHEL dan turunannya. Unduh dan instal kunci penandatanganan publik Elastic.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Versi Gratis
Paket ini gratis untuk digunakan. Ini berisi open source, fitur komersial gratis dan berbayar. Ketika Anda menginstal sebuah paket, Anda akan menerima lisensi dasar. Anda dapat mengunjungi halaman berlangganan untuk mendaftar semua fitur yang disertakan dalam versi gratis dan komersial.
Anda dapat memulai uji coba 30 hari untuk mencoba semua fitur berbayar. Pada akhir masa percobaan, fitur komersial beroperasi dalam mode terdegradasi. Anda dapat mengembalikan lisensi ke lisensi dasar, memperpanjang uji coba, atau membeli langganan.
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Versi Sumber Terbuka
Paket ini gratis untuk digunakan dan hanya berisi fitur yang tersedia di bawah Lisensi Apache 2.0.
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Instal Elasticsearch
Instal Elasticsearch (v7.x) dengan menggunakan perintah berikut.
Versi Gratis
yum install -y elasticsearch
Versi Sumber Terbuka
yum install -y elasticsearch-oss
Aktifkan Elasticsearch untuk memulai secara otomatis selama startup sistem.
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
Setelah Anda memulai layanan Elasticsearch, tunggu setidaknya satu menit untuk memulai sepenuhnya. Jika tidak, pengujian akan gagal.
Elastisearch sekarang harus mendengarkan pada port 9200 untuk memproses permintaan HTTP. Gunakan curl untuk mendapatkan respons.
curl -X GET 'http://localhost:9200'
Anda akan mendapatkan respon seperti di bawah ini.
{ "name" : "centos8.itzgeek.local", "cluster_name" : "elasticsearch", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Konfigurasi Elasticsearch
File konfigurasi Elasticsearch dapat ditemukan di direktori /etc/elasticsearch/. elasticsearch.yml adalah file konfigurasi utama dari Elasticsearch, dan berisi pengaturan default untuk menjalankan cluster pengembangan. Log Elasticsearch disimpan di direktori /var/log/elasticsearch.
Nama Cluster
Cluster.name pengaturan digunakan untuk menemukan dan menggabungkan node secara otomatis dengan node lain. Jika sekelompok node Elasticsearch pada jaringan yang sama memiliki nama cluster yang sama, mereka akan menemukan satu sama lain dan membentuk sebuah cluster.
Ubah nama cluster default node Elasticsearch untuk menghindari auto-join dengan node lain di jaringan yang sama. Pastikan Anda menggunakan nama cluster yang unik.
Edit file elasticsearch.yml.
vi /etc/elasticsearch/elasticsearch.yml
Ganti els-cluster dengan nama cluster Elasticsearch Anda.
cluster.name: els-cluster
Nama Node
Node.name seperti nama host untuk server Elasticsearch, yang dihasilkan secara dinamis selama startup layanan. Anda dapat mengatur nama Node dengan memperbarui baris di bawah ini. Ganti els-cluster-node01 dengan nama node Elasticsearch Anda.
node.name: els-cluster-node01
Alamat Mendengarkan
Elasticsearch mengikat ke localhost (127.0.0.1) dan mendengarkan pada nomor port 9200 untuk lalu lintas HTTP secara default. Ini menggunakan nomor port 9300 – 9400 untuk komunikasi antar node dalam cluster.
Untuk membentuk cluster Elasticsearch multinode atau membawa node Elasticsearch untuk penggunaan produksi agar aplikasi dapat mengakses node Elasticsearch, Anda perlu mengonfigurasi Elasticsearch untuk mendengarkan alamat IP sistem.
### Listening on particular IPv4 ### network.host: 192.168.0.10
ATAU
### Listen on All IP Address ### network.host: 0.0.0.0
Anda juga perlu memperbarui pengaturan di bawah ini dengan alamat IP sistem Anda.
discovery.seed_hosts: ["192.168.0.10"]
Mulai ulang layanan Elasticsearch.
systemctl restart elasticsearch
Setelah Anda memulai ulang layanan Elasticsearch, tunggu setidaknya satu menit agar Elasticsearch dapat dimulai sepenuhnya.
Periksa apakah Elasticsearch mendengarkan pada port 9200 pada semua alamat IP atau alamat IP tertentu dengan perintah netstat.
BACA: Perintah netstat tidak ditemukan di CentOS 8 / RHEL 8
netstat -antup | grep -i 9200
Keluaran:
tcp6 0 0 :::9200 :::* LISTEN 2143/java
Pastikan Nama Node dan Nama Cluster telah disetel dengan benar dengan menggunakan curl.
curl -X GET 'http://192.168.0.10:9200'
Anda akan mendapatkan respon seperti di bawah ini.
{ "name" : "els-cluster-node01", "cluster_name" : "els-cluster", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Bekerja Dengan Elasticsearch
Mari tambahkan beberapa data ke Elasticsearch. Anda dapat menggunakan perintah curl untuk membaca, menambah, menghapus, dan memperbarui data ke Elasticsearch melalui port 9200 menggunakan RESTful API.
Dokumen disimpan dalam format berikut
Elasticsearch Indeks Jenis Dokumen Bidang
Indeks: Jamak dari indeks, tempat data Elasticsearch disimpan.
Jenis: Ini berisi banyak dokumen, dan itu seperti tipe data.
Dokumen: Ini berisi bidang data.
Bidang: Data sebenarnya.
Tambahkan Data
Gunakan perintah curl berikut untuk menambahkan data ke Elasticsearch kami.
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
Anda akan mendapatkan respons berikut dengan "hasil":"dibuat."
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
Dimana,
itzgeek: Indeks cluster Elasticsearch.
cara: Jenis dokumen
1: ID entri di bawah indeks howtos dan itzgeek.
Baca Data
Gunakan perintah berikut untuk mengkueri data di Elasticsearch.
curl -X GET 'http://localhost:9200/itzgeek/howtos/1'
Tambahkan ?pretty=true ke perintah di atas untuk mendapatkan output yang diformat.
curl -X GET 'http://localhost:9200/itzgeek/howtos/1?pretty=true'
Outputnya akan terlihat seperti di bawah ini.
{ "_index" : "itzgeek", "_type" : "howtos", "_id" : "1", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" } }
Perbarui Data
Gunakan perintah berikut untuk memperbarui data.
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
Tidak akan ada perubahan dalam Indeks, jenis, dan dokumen. Namun, kolom akan memiliki data yang dimodifikasi.
Responsnya akan terlihat seperti di bawah ini, berisi “_version”:2 dan “result”:”updated” yang artinya dokumen telah diperbarui.
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Hapus Data
Gunakan perintah berikut untuk menghapus dokumen.
curl -X DELETE 'http://localhost:9200/itzgeek/howtos/1'
Responnya akan terlihat seperti di bawah ini. Jika dokumen ditemukan, Anda akan mendapatkan "hasil":"dihapus".
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":3,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":2,"_primary_term":1}
Jika dokumen tidak ditemukan, Anda akan mendapatkan “hasil”:”not_found”.
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":4,"result":"not_found","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":3,"_primary_term":1}
Kesimpulan
Saya harap Anda mempelajari cara menginstal Elasticsearch di CentOS 8 / RHEL 8 dan menambahkan, membaca, menghapus, dan memperbarui data di Elasticsearch. Anda juga dapat menyiapkan cluster Elasticsearch multi-node untuk menangani data dalam jumlah besar.