در این مقاله سعی دارم نحوه یک پارچه سازی پایتون و الستیک سرچ رو به صورت ساده توضیح بدم و اینکه چجوری باید به سرور الستیک وصل شد ،و چجوری 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"
}
}
}
توی این مقاله سعی کردم بسیار ساده ، پیاده سازی الستیک سرچ در پایتون رو توضیح بدم ، تجربه هایی هم در پروژه های بزرگ ، در چند سال گذشته دارم که حتما در آینده به اشترام میزارم.