در این مقاله دو موتور جستجو open-source محبوب ElasticSearch و Solr را بررسی می کنیم. هر دوی آنها در پلتفرم Apache Lucene open source ساخته شده اند، بنابراین ویژگی های مشترک زیادی دارند. ‌هر چند تفاوت های زیادی در سهولت توسعه‌، ‌مقیاس پذیری و ویژگی های دیگرشان دارند.

 

در مورد پیاده سازی جستجو و شاخص گذاری و یکپارچه سازی ElasticSearch مستقل (Remote) با لایفری ۷٫۱ مطالعه نمایید.

امروزه بیشتر از هر زمان دیگری زمان رشد cloud و داده است. اپلیکیشن های امروزی داده را در مقیاس پتابایت و زتابایت تولید می کنند در حالی که تقاضا برای کارایی سریعتر همچنان وجود دارد. ‌با این حال، زمانی که داده ها جمع می شوند، ‎‌جستجو در محور همه ی این اطلاعات می تواند به یک چالش مهم back-end تبدیل شود.

Apache solr

Apache solr یک موتور جستجوی open source هست که در کتابخانه جاوا که lucene نام دارد ساخته شده است که توانایی های جستجوی apache solr را به طریق user-friendly ارائه می دهد اگر به درستی استقرار یابد و مدیریت شود قادر است یک موتور جستجوی مقیاس پذیر، قابل اعتماد و دارای تحمل خطا  باشد. غول های اینترنتی مانند اینستاگرام، آمازون‌ و ‌eBay از جستجوی solr استفاده می کنند چراکه قابلیت جستجوی همزمان چندین سایت را دارد.

لیست ویژگی های اصلی:

  • Full-text search:جستجوی کامل متن
  • Highlighting: مشخص کردن
  • Faceted search: جستجوی آسان
  • Real-time indexing: نمایه سازی به موقع
  • Dynamic clustering: خوشه بندی پویا
  • Database integration: ادغام بانک اطلاعاتی
  • No SQL features and rich document handling ( for example: Word and PDF files) بدون ویژگی های SQL و رسیدگی به اسناد غنی (بطور مثال word و PDF)

 

Elasticsearch

یک موتور جستجوی متن باز open source، توزیع شده که در بالای کتابخانه Apache Lucene جاوا ساخته شده است. Elasticsearch چند سال بعد از solr ایجاد شد و موتور جستجوی متن کامل توزیع شده، ‌چند لایه را ارائه داد.

موتور جستجوی توزیع شده شاخص هایی دارد که می توانند به بخش های مختلف تقسیم شوند ‌و هر بخش می تواند چندین بار تکرار شود.‌ هر نود Elasticsearch می تواند یک یا چندین بخش داشته باشد و موتور آن می تواند مانند یک هماهنگ کننده برای نماینده اپراتور ها برای اصلاح بخش ها عمل کند.

لیست ویژگی های اصلی:

  • Distributed search: جستجوی توزیع شده
  • Multi-tenancy: چند اجاره ای
  • An analyzer chain: زنجیره تحلیلگر
  • Analytical search: جستجوی تحلیلی
  • Grouping & aggregation: گروه بندی و جمع آوری

مقایسه Elasticsearch و Solr بر اساس ویژگی ها

ترند

ترند گوگل گویای این هست که Elasticsearch نسبت به solr سطح بالاتری دارد اما این بدین معنی نیست که solr منسوخ شده است. ‌solr همچنان یک موتور جستجوی متن باز open source محبوب است.

نصب و راه اندازی

Elasticsearch نسبت به solr  حجم کمتری دارد و نصب آن زمان کمتری می گیرد و آسانتر است. هر چند اگر Elasticsearch به درستی مدیریت نشود ممکن است این سهولت استفاده و توسعه تبدیل به یک مشکل شود. اگر پیکربندی بر اساس Json است Elasticsearch گزینه مناسبی است در غیر اینصورت گزینه مناسبی نیست.

آخرین ورژن solr یک ست خوب از Rest API ها تامین کرده است که پیچیدگی های نسخه های قبلی را از بین برده است.

منابع داده

Solr داده ها را از منابع مختلفی مانند فایل xml، ‌فایل CSV و داده های استخراج شده از جداول پایگاه داده می پذیرد.  Elasticsearch داده ها را از منابع مختلفی مانند ActiveMQ, AWS SQS, DynamoDB (Amazon NoSQL), FileSystem, Git, JDBC, JMS, Kafka, LDAP, MongoDB, neo4j, RabbitMQ, Redis, Solr و Twitter می گیرد.

جستجو

Solr بیشتر برای فایل های متنی استفاده می شود در صورتی که Elasticsearch برای query هایی که نیاز به تحلیل دارند مورد استفاده قرار می گیرد. تیم پشت Elasticsearch در تلاش است که این query ها تاثیر و کارایی بیشتری در سطح Lucene و Elasticsearch داشته باشند. بنابراین برای زمانی که داده های شما فقط متنی نیستند Elasticsearch گزینه مناسبتری است.

مقیاس پذیر و توزیع شده

موتور های جستجو با سیستم های بزرگی با میلیون ها سند سر و کار دارند. به همین منظور موتور های جستجو باید به اندازه ی کافی ‌مقیاس پذیر، قابل تکرار و ‌ماژولار باشند تا بتوانند معماری توزیع شده و مقیاس پذیر را داشته باشند.

جامعه ی استفاده کننده

Solr یک جامعه ی گسترده و open source دارد.  هر کسی می تواند در solr شرکت داشته باشد، توسعه دهندگان و کد نویسان solr تنها بر اساس شایستگیشان انتخاب می شوند. Elasticsearch به طور کامل متن باز open source نیست.‌ همه ی شرکت کنندگان می توانند به منبع source کد ها دسترسی داشته باشند، همه ی کاربران می توانند در آن تغییراتی اعمال کنند. اما تغییرات نهایی توسط کارمندان شرکت  Elastic اعمال می شود. در واقع elastic توسط یک شرکت راهبری می شود نه توسط یک جامعه!

مشارکین و متعهدین solr چندین سازمان را در بر می گیرند در حالی که مشارکین elasticsearch فقط از شرکت elastic هستند.

اسناد

Solr در اینجا امتیاز خوبی کسب می کند. ‌چرا که محصولی مستند با مثالها و محتویات خوب برای استفاده API است. اسناد Elasticsearch سازماندهی شده است اما فاقد مثالهای خوب و دستورالعمل های واضح پیکر بندی است.

نتیجه گیری مقایسه نهایی solr با Elasticsearch 

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

solr Elasticsearch
نصب و راه اندازی باجزییات اسناد پشتیبانی می شود. نصب آسان و قابل درک تر
Indexing/searching

نمایه سازی/ جستجو

مبتنی بر متن مناسب کوئری های پیچیده و سخت
Scalability and Clustering

مقیاس پذیری و خوشه بندی

solrCloud را تامین می کند. طراحی شده برای cloud و مقیاس پذیری بهتر
Community

اجتماع

جامعه بزرگتر جامعه در حال رشد، ‌کاملا open source نیست.
مستندات اسناد خیلی خوب فاقد مستندات

 

-Elasticsearch بخاطر سهولت استفاده بین توسعه دهندگان جدید محبوبتر است اما اگر با solr کار می کنید نیازی نیست که به Elasticsearch روی آورید چرا که برتری به solr ندارد.

-اگر داده های شما نیاز به آنالیز شدن دارند  Elsaticsearch گزینه بهتری است.

-Elasticsearch برای محیط های توزیع شده و Cloud گزینه بهتری است.

نویسنده: خانم مهندس مریم کوچکی

    ارسال نظر

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بالا