Elastic Search’te Python SDK ile Temel İşlemler

Genellikle Örnekler Kibana ve Dümdüz RestApi üzerinden verilmiş ancak ben direkt derli toplu Python kodu olarak kullanmayı tercih ediyorum.

from elasticsearch import Elasticsearch
es = Elasticsearch()

İndis oluşturmak

es.indices.create("indexismi")

şeklinde indis oluşturabilmekteyiz. Artık bütün işlemlerimizi bu indis üzerinden yapacağız.

indisi birtakım parametreler ile oluşturmak istiyorsanız (number of shards ve number of replikas gibi ) şu şekilde çalıştırmak gereklidir:

request_body = {
"settings" : {
"number_of_shards": 1,
"number_of_replicas": 1}
}
es.indices.create("indexismi",request_body)

Şeklinde oluşturabiliriz.

Silme İşlemini ise şu şekilde yapmaktasınız:

es.indices.delete("indexismi")

Silme işlemi basitçe bu şekilde yapılmaktadır.

Document Eklemek

Document ekleme işlemi için body objesi gereklidir. Ekleme işlemi şu şekilde yapılır:

doc = {
'tur': 'olumlu',
'text': 'Çok Doğru Söylüyorsunuz.',
'timestamp': datetime.now(),
}
es.index(index="indexismi",body=doc)

Eklemek için id ekleyebilirsiniz.

es.index(index="indexismi",body=doc,id=14)

Document Getirmek

es.get(index="indexismi",id=14) 

id ile getirmekteyiz. Sadece Documentı almak için şu şekilde işlemler yapmamız gerekmektedir:

result=es.get(index="indexismi",id=14)
result["_source"]

Documentleri Değiştirmek (Update)

es.update(index="indexismi",id=14,body={
"doc":{
"text":"Söylediklerinizden Etkilendim."
}
})

İstediğiniz fieldı değiştirebilmektesiniz. Field ekleme işlemi de yapabilirsiniz.

Örnek olarak diger fieldına 144 atıyoruz:

es.update(index="indexismi",id=14,body={
"doc":{
"diger":144
}
})

Documentleri Silmek

Artık alıştığımız üzere es.delete ile işlemi gerçekleştirmekteyiz:

es.delete(index="indexismi",id=15)

Son olarak basit bir search işlemi örneği verelim:

sonuc=es.search(index="indexismi", body={"query":{"match":{"text":"Etkilendim"}}})

Sonucun içine bakalım:

{'_shards': {'failed': 0, 'skipped': 0, 'successful': 1, 'total': 1},
'hits': {'hits': [{'_id': '14',
'_index': 'indexismi',
'_score': 0.75491273,
'_source': {'diger': 144,
'text': 'Söylediklerinizden Etkilendim.',
'timestamp': '2019-11-27T17:26:51.873573',
'tur': 'olumlu'},
'_type': '_doc'}],
'max_score': 0.75491273,
'total': {'relation': 'eq', 'value': 1}},
'timed_out': False,
'took': 0}

Gördügünüz gibi hits’in içinde tur text vb bütün fieldlar bulunmaktadır. Array halinde sağlayan bütün documentler gelmektedir.

Array’deki ilk elemanı döndürmek için:

ilk=result["hits"]["hits"][0]

Computer Engineer,Sociologist, CSE Master Student

Computer Engineer,Sociologist, CSE Master Student