یکپارچه سازی پایتون و الستیک سرچ


در این مقاله سعی دارم نحوه یک پارچه سازی پایتون و الستیک سرچ رو به صورت ساده توضیح بدم و اینکه چجوری باید به سرور الستیک وصل شد ،و چجوری DSL ها و کوئری های الستیک رو با پایتون اجرا کرد

در گام اول کتابخانه الستیک رو با pip نصب می کنیم

pip install elasticsearch

اصولا الستیک روی پورت 9200 ران میشه و بعد از ران کردنش رو کامپیوترمون ، باید با کد های زیر بهش کانکت بشیم

from elasticsearch import Elasticsearch
 elastic_host = {"host": "localhost", "port": 9200}
 host  = Elasticsearch(hosts=[elastic_host])

حالا برای ایجاد ایندکس ها و insert کردن دیتای جدید ، از شیوه زیر استفاده میکنیم .

فرض کنید که دیتابیسی از کتاب های یک کتابخانه داریم و قرار است اطلاعات آن ها را برای جستجو در الستیک سرچ ، insert کنیم .

myBook={
    "author":"sina",
    "price":"45.00",
    "name": "DjangoForWebDevelopers",
    "ISBN": " 9 7 8 - 3 - 1 2 - 7 3 2 3 2 0 - 7"  }
    

حالا این اطلاعات json راباید insert کنیم .

 es.index(index='books',doc_type='book',id=1,body=myBook)
 

با اجرای کد بالا دیتابیس books ساخته میشه و اطلاعات book در الستیک ذخیر میشه.

برای بازیابی اطلاعات هم روش های بسیار زیادی وجود داره که میشه از اونها استفاده کرد . به عنوان مثال اگر بخواهیم دنبال یک کتاب بگردیم که نام نویسنده اش sina هستش میتونیم از روش زیر استفاده کنیم .

book_result_query = es.search(index='books',body={'query':{'match':{'author':'sina'}}})

print (book_result_query['hits']['hits'])

خروجی کد بالا به صورت زیر هستش .

"_index": "books",

"_type": "book",

"_id": "123",

"_version": 1,

"found": true,

"_source": {

"book": {

myBook={
"author":"sina",
"price":"45.00",
"name": "DjangoForWebDevelopers",
"ISBN": " 9 7 8 - 3 - 1 2 - 7 3 2 3 2 0 - 7"

}

}

}



توی این مقاله سعی کردم بسیار ساده ، پیاده سازی الستیک سرچ در پایتون رو توضیح بدم ، تجربه هایی هم در پروژه های بزرگ ، در چند سال گذشته دارم که حتما در آینده به اشترام میزارم.