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

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

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store