Elasticsearch yapısını gerçekleyen fonksiyonlar php kullanılarak yazılmıştır.
Öncelikle çalıştırmış olduğumuz servisleri projemize tanımlayabimek için composer kuruyoruz projemize.
$client = Elasticsearch\ClientBuilder::create()->build();
if ($client) {
echo 'connected';
}
Eğer elasticsearch windows server üzerine kurulmak isteniyorsa öncelikle windows üzerinde java kurulu olması gerekmektedir. Hem JDK hem JRE kurulu olmalıdır. İnternette "jre server" şeklinde aratarak indirebilirsiniz. Örneğin ben şu adresten uygun sürümü indirdim : http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html indirilen zip dosyası içeriği c:/Program Files/java.. yolu takip edilrek çıkarılır. Klasörün içerisinde bulunan jre klasörüne ait yol, örneğin : "C:\Program Files (x86)\Java\jdk1.8.0_151\jre" denetim masası üzerinden -> Sistem sekmesin içerisiden -> gelişmiş sistem ayarları takip edilerek açılan pencereden ortam değişkenleri tıklanır açılan pencerede sistem değişkenleri kısmına yeni denerek değişken adı JAVA_HOME ve değişken adresi "C:\Program Files (x86)\Java\jdk1.8.0_151\jre" olacak şekilde tanımlanır. Bu sayede elastichsearch windows server üzerinde kullanılabilir. https://github.com/ofke-yazilim/elasticsearch-php/tree/master/elasticsearch/documents elasticsearch fonksiyonlarını içeren class yükleniyor
include 'elasticsearch.php'; $elasticsearch = new elasticsearch(); $con = $elasticsearch->connectTest(); if($con=="connected"){ $json = file_get_contents("data.json"); $products = json_decode($json); $responses = array();
Arama işlemlerini gerçekleştireceğimiz yeni bir json oluşturuyoruz.
Eğer daha önce aynı index ismi ile json oluşturduysanız hata veririr.
} echo $elasticsearch->getIndexs("http://localhost:9200");
Elasticsearch servisimiz üzerine adı index değeri demo2, tipi urunler2 olan ve içerisinde $product arrayını barındıracak json tanımlandı.
Arama yapabilmek için yukarıda tanımlamış olduğumuz json yapısındaki verileri alıyoruz.
Verileri aldığımız fonksiyon iki şekilde çalışır ilkinde sadece _id indexleri 0 ve 1 olanlar listelenip alınırken ikincisnde bütün veriler alınır.
id değerimizi gönderirken aşağıda olduğu gibi bir fazlası gönderilmeli 210 için 211 gönderiilmeli
Ayrıca 211 sayısının sol tarafında 1 olarak gönderilmeli
$insert = $elasticsearch->dataSetAdd("yeni2","urunler3",1,211,"http://localhost:9200",array(0=>array("id"=>210,"name-1"=>"Kesmez"),1=>array("id"=>211,"name-1"=>"Faruk"))); // echo $elasticsearch->getCount("yeni2","urunler3","http://localhost:9200");
Aşağıda sql sorgularında like olarak bilinen işlemin elasticsearch ile yapan fonsiyonu çalıştırır.
Aşağıdaki sorgu id,code,name-1 sütunlarında içerisinde Bayan geçen ya da sonu 001 ile biten verileri id değerine göre büyükten küçüğe listeler.
Beliritlen sütun üzerinde istenilen tek bir değeri arayan fonksiyon yani id değeri 11 olan datayı getirir
id değeri 5 ile 10 arasındaki olan değerleri id değerine göre büyükten küçüğe doğru getirir 0 dan başlayarak 10 adet getirir.
print_r($responses);exit;
var_dump($responses);exit;
} else{
die("Elasticsearch portuna bağlantı sağlanamadı");
}