Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 7839|Відповідь: 0

Вибір пошукової системи: Elasticsearch проти Solr

[Копіювати посилання]
Опубліковано 11.12.2018 13:42:36 | | | |
Дослідницький документ для пошукової системи

Вступ до Elasticsearch*


Elasticsearch — це розподілений пошуковий та аналітичний двигун у реальному часі. Він допомагає обробляти великі дані швидше, ніж будь-коли раніше.

Його можна використовувати для повнотекстового пошуку, структурованого пошуку та аналітики, а також, звісно, можна поєднувати всі три.

Elasticsearch — це пошукова система, побудована на повнотекстовій пошуковій системі Apache Lucene™, яку можна назвати найсучаснішою та найефективнішою повнофункціональною відкритою пошуковою системою, доступною сьогодні.

Але Lucene — це лише фреймворк, і щоб повністю використати його можливості, потрібно використовувати JAVA та інтегрувати Lucene у свою програму. Потрібно багато часу, щоб зрозуміти, як це працює, а Lucene дуже складна.

Elasticsearch використовує Lucene як внутрішній рушій, але для повнотекстового пошуку достатньо використовувати єдиний API без розуміння складних принципів роботи Lucene.

Звісно, Elasticsearch не просто такий простий, як Lucene, він не лише включає функції повнотекстового пошуку, а й може виконувати такі завдання:

  • Розподілене зберігання файлів у реальному часі та індексація кожного поля для пошуку.
  • Розподілена пошукова система з аналітикою в реальному часі.
  • Він може масштабуватися до сотень серверів для обробки петабайтів структурованих або неструктурованих даних.

З такою кількістю функцій, інтегрованих в один сервер, ви можете легко спілкуватися з RESTful API ES через клієнта або будь-яку з улюблених мов програмування.

Почати з Elasticsearch дуже просто. Він має багато дуже розумних стандартних варіантів, що робить його хорошим способом для початківців уникнути необхідності працювати зі складними теоріями одразу після початку.

Він встановлений і готовий до використання, і може бути дуже продуктивним при невеликих витратах на навчання.

У міру навчання ви також зможете скористатися більш просунутими функціями Elasticsearch, а весь рушій можна гнучко налаштовувати. Ви можете налаштувати власний Elasticsearch відповідно до своїх потреб.

Сценарії використання:

  • Вікіпедія використовує Elasticsearch для повнотекстового пошуку та виділення ключових слів, а також для пошукових пропозицій, таких як пошук за вказівкою та «чи мав на увазі».
  • The Guardian використовує Elasticsearch для обробки журналів відвідувачів, щоб редактори могли отримувати інформацію про реакції громадськості на різні статті в режимі реального часу.
  • StackOverflow поєднує повнотекстовий пошук із геолокацією та релевантною інформацією, щоб надати представлення питань, пов'язаних із більш подібними до цього.
  • GitHub використовує Elasticsearch для отримання понад 130 мільярдів рядків коду.
  • Щодня Goldman Sachs використовує його для індексування даних на 5 ТБ, а багато інвестиційних банків застосовують його для аналізу рухів фондового ринку.

Але Elasticsearch призначений не лише для великих підприємств, він також допоміг багатьом стартапам, таким як DataDog і Klout, розширити свої можливості.

Плюси та мінуси Elasticsearch**:

Заслуга

  • Elasticsearch розподілено. Інші компоненти не потрібні, а розподіл здійснюється в реальному часі, що називається «Push-реплікація».
  • Elasticsearch повністю підтримує пошук майже в режимі реального часу з Apache Lucene.
  • Обробка мультитенантності не потребує спеціальної конфігурації, тоді як Solr вимагає більш складних налаштувань.
  • Elasticsearch використовує концепцію Gateway, щоб полегшити резервне копіювання.
  • Кожен вузол утворює рівну мережеву структуру, і коли деякі вузли виходять з ладу, інші автоматично призначаються для роботи на їхньому місці.


Недолік

  • Лише один розробник (нинішня організація Elasticsearch на GitHub — це більше, вона вже має досить активних підтримувачів)
  • Недостатньо автоматичний (не підходить для поточного нового API Index Warmup)


Про Солра*

Solr (вимовляється як «солар») — це відкрита платформа корпоративного пошуку для проєкту Apache Lucene. Основні функції включають повнотекстовий пошук, позначення попадань, фасетований пошук, динамічну кластеризацію, інтеграцію з базою даних та обробку багатоформатного тексту (наприклад, Word, PDF). Solr є високомасштабованим і забезпечує розподілений пошук і копію індексів. Solr — найпопулярніша пошукова система корпоративного рівня, а Solr4 також додає підтримку NoSQL.

Solr — це автономний повнотекстовий пошуковий сервер, написаний на Java, який працює на контейнері сервлетів, таких як Apache Tomcat або Jetty. Solr використовує бібліотеку пошуку Lucene Java як основу для повнотекстового індексування та пошуку, а також має REST-подібні HTTP/XML та JSON API. Потужні зовнішні можливості конфігурації Solr дозволяють легко адаптуватися до багатьох типів додатків без кодування на Java. Solr має архітектуру плагіна для підтримки більш просунутої кастомізації.

Через злиття проєктів Apache Lucene та Apache Solr у 2010 році, обидва проєкти були створені та реалізовані однією командою розробників Apache Software Foundation. Що стосується технологій чи продуктів, Lucene/Solr або Solr/Lucene — це те саме.

Плюси та мінуси Solr:

Заслуга

  • Solr має більшу та більш зрілу спільноту користувачів, розробників і учасників.
  • Підтримка додавання індексів у різних форматах, таких як HTML, PDF, програмні формати Microsoft Office та формати простого тексту, такі як JSON, XML, CSV тощо.
  • Солр відносно зрілий і стабільний.
  • Пошук під час індексації не враховується, а швидкість швидша.


Недолік

  • Коли індекс встановлено, ефективність пошуку знижується, а ефективність пошуку в реальному часі не є високою.


Elasticsearch проти Solr*

Solr працює швидше при простому пошуку існуючих даних.




Під час індексації в реальному часі Solr спричиняє блокування виводу та низьку продуктивність запитів, що має очевидну перевагу Elasticsearch.



Зі збільшенням обсягу даних ефективність пошуку Solr знижується, тоді як Elasticsearch суттєво не змінюється.



Підсумовуючи, архітектура Solr не підходить для пошуку в реальному часі.

Реального виробничого тестування*

На рисунку нижче показано збільшення середньої швидкості запитів у 50 разів після переходу з Solr на Elasticsearch.




Резюме порівняння Elasticsearch і Solr

  • Обидва легко встановлюються;
  • Solr використовує Zookeeper для розподіленого управління, тоді як сам Elasticsearch має розподілене управління оркестрацією;
  • Solr підтримує більше форматів даних, тоді як Elasticsearch підтримує лише формати JSON;
  • Solr офіційно надає більше функцій, тоді як сам Elasticsearch більше зосереджується на основних функціях, а розширені функції здебільшого надаються сторонніми плагінами.
  • Solr перевершує Elasticsearch у традиційних пошукових додатках, але значно менш ефективний, ніж Elasticsearch, при обробці пошукових додатків у реальному часі.
  • Solr — потужне рішення для традиційних пошукових додатків, але Elasticsearch краще підходить для нових додатків пошуку в реальному часі.


Інші відкриті пошукові рішення на базі Lucene*


1: Використовуйте Lucene напряму

Примітка: Lucene — це бібліотека пошуку на основі Java, яка не є повноцінним рішенням сама по собі і потребує додаткових зусиль у розробці.

Переваги: зріле рішення з багатьма успішними справами. Apache — проєкти найвищого рівня, які продовжують швидко розвиватися. Велика та активна спільнота розробників, велика кількість девелоперів. Це просто бібліотека класів, з достатнім простором для налаштування та оптимізації: після простої кастомізації вона може задовольнити більшість поширених потреб; Оптимізовано для підтримки 1 мільярд+ пошукових запитів.

Мінуси: Потребує додаткових зусиль у розробці. Усі масштабування, розподіл, надійність тощо мають реалізовуватися самостійно; У нереальному часі існує затримка між індексацією та пошуком, і масштабованість поточної схеми пошуку «Lucene Near Real Time search» потребує подальшого покращення

Вхід за гіперпосиланням видно.

2:Катта

Примітка: Схема пошуку на основі Lucene з розподіленою підтримкою, масштабованою, стійкою до відмов, майже в реальному часі.

Плюси: Розповсюджується з коробки з Hadoop. Він має механізм масштабування та стійкості до відмов.

Недоліки: Це просто пошукове рішення, і вам все одно доведеться реалізувати індексацію самостійно. З точки зору функції пошуку задовольняються лише найпростіші потреби. Історій успіху менше, а зрілість проєкту трохи нижча. Оскільки потрібно підтримувати дистрибуцію, буде складно налаштувати його під складні вимоги запитів.

Вхід за гіперпосиланням видно.

3:Hadoop внесок/індекс

Примітка: режим Map/Reduce — розподілене індексування — може використовуватися з Katta.

Переваги: розподілене індексування та масштабованість.

Недоліки: Лише схема індексування, а не реалізація пошуку. Працює в пакетному режимі з поганою підтримкою пошуку в реальному часі.

Вхід за гіперпосиланням видно.

4: Відкрите рішення LinkedIn

Опис: Низка рішень на базі Lucene, включно з Zoie для пошуку майже в реальному часі, Bobo для пошуку фасетів, Decomposer для алгоритмів машинного навчання, Krati для репозиторіїв узагальнення, Sensei для обгортання схем баз даних та іншими

Переваги: Перевірене рішення, що підтримує розподілену, масштабовану та багату реалізацію функцій

Мінуси: Занадто тісний зв'язок із компанією LinkedIn і погана можливість налаштування

Вхід за гіперпосиланням видно.

5: Лукандра

Примітка: На основі Lucene індекс існує в базі даних Cassandra

Переваги: Зверніться до переваг Кассандри

Мінуси: Згадайте недоліки Кассандри. До того ж, це лише демонстрація і не була ретельно перевірена

Вхід за гіперпосиланням видно.

6:HBasene

Примітка: На основі Lucene індекс існує в базі даних HBase

Переваги: Зверніться до переваг HBase

Недоліки: Згадайте недоліки HBase. Крім того, у реалізації люценові терми зберігаються як рядки, а списки публікації, що відповідають кожному терму, зберігаються у вигляді стовпців. Зі зростанням кількості списків публікацій для одного терміну швидкість запиту суттєво вплине


Вхід за гіперпосиланням видно.

7: Xunsearch

Примітка: Xunsearch використовує структурований ієрархічний дизайн, що включає бекенд-сервіси та фронтенд-пакети розробки, з чіткими ієрархіями та без перетину. Бекенд — це демон, написаний на C/C++, тоді як фронтенд використовує PHP — найпопулярнішу мову скриптів, яка зручніша для веб-пошукових проєктів. Детальніше див. розділ Архітектурний дизайн.

Вхід за гіперпосиланням видно.






Попередній:Розробка EOS Blockchain PHP Kit
Наступний:Інсталяція Centos 7 Java JDK Tutorial
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com