Функциональность полнотекстового поиска в приложении на основе микросервисов Spring Boot - PullRequest
0 голосов
/ 08 марта 2020

У нас есть приложение на основе микросервиса, которое разработано в Spring Boot. Предположим, есть 3 микросервиса A, B и C. Внешний интерфейс написан с использованием Angular, а внутренний содержит MySQL базу данных и Hibernate для ORM. Нам необходимо реализовать функцию полнотекстового поиска, которая будет иметь поле поиска в пользовательском интерфейсе, где пользователь может вводить текст по своему выбору. Поиск должен иметь возможность возвращать данные из баз данных со всех 3-х микроуслуг Я сталкиваюсь с трудностями при доработке технологии поиска для того же. Вот некоторые из технологий, которыми я владею:

  1. Hibernate Search
  2. Apache Solr
  3. ElasticSearch

лучшая технология для этой проблемы? Если возможно, есть ли примеры того же самого?

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Для полнотекстового поиска Elasticsearch и Apache Solr - лучший выбор из данного выбора.

Однако я категорически не согласен с тем, что Elasticsearch лучше, чем Solr или наоборот, не зная больше информации о вашем бизнесе. Обе технологии будут одинаково работать для данной проблемы, поскольку обе они основаны на Apache поисковой системе Lucene.

Они обе предлагают отличные клиенты REST.

Здесь вы можете посмотрите пример реализации обоих - Apache Solr и Elasticsearch в одном проекте в Java. Вы также можете проверить, какие различия и какую вы предпочитаете.

Также есть шесть статей о том, как использовать Apache Solr и Elasticsearch, написанные здесь . Последняя глава посвящена исследованию, которое показывает, что оба движка практически равны и имеют различия только в очень специфических c бизнес-кейсах. Оба имеют много вспомогательных инструментов.

0 голосов
/ 08 марта 2020

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

Старая / стабильная версия Hibernate search, т.е. 5.11 , поддерживает Elasticsearch 2.0 до 5.6.

Но, глядя на ваши запросы, все зависит от того, что вы используете. Возможно, нижеуказанные пункты помогут вам.

  • Каков размер данных, которые у вас есть, и какова ожидаемая скорость роста ваших документов / данных.
  • Каковы будут ваши скорости записи и чтения для этого приложения?
  • Какой тип поиска у вас есть? Какие функции поиска вы ищете? например, автозаполнение, автозаполнение, выделение, граненый поиск
  • Вы ищете распределенный поиск или у вас есть ограничения в использовании аппаратного обеспечения?
  • Требуется ли поддержка поиска в нескольких языки?
  • Достаточно ли этого только текстового поиска, или вы будете также проводить анализ журналов поиска или данных просмотра кликов в будущем?
  • Какие варианты у вас есть, когда дело доходит до глотать документы в вашу поисковую систему. Если это Elasticsearch, вы можете легко использовать Beats или Logsta sh. Или вы можете просто выгружать необработанные данные в ES, а затем использовать комбинацию Ingest API для предварительной обработки / обогащения / фильтрации, а затем снова обработать данные в другом индексе в Elasticsearch, обработав их sh. ,

И Solr, и Elasticsearch - отличные технологии, но если вам придется использовать одну из них, я настоятельно рекомендую использовать Elasticsearch , потому что это поможет вам во всех вышеперечисленных запросах. гораздо более мощная распределенная модель, она имеет собственный удивительный DSL, который очень зрелый и простой в использовании, имеет превосходные инструменты администрирования / API для управления данными, он чрезвычайно быстр и прост в настройке. Не говоря уже об их запросах на агрегацию, которые помогут вам получить аналитическую информацию о документах, которые вы приняли.

Вы также можете себе позволить настроить собственную панель управления с помощью Kibana , которая поможет вам быстро создать отличные визуализаторы.

Плюс в том, что он полностью RESTful по своей природе, так что это облегчает вашу жизнь, когда дело доходит до развертывания ваших приложений. Я бы посоветовал вам начать с здесь и потратить некоторое время на понимание технологии.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...