Статьи

Улучшение компонента Camel Solr

В последнее время мы использовали Apache Camel в качестве предпочтительного конвейера. Он представляет собой довольно симпатичный DSL для соединения различных источников данных, выполнения преобразований и, наконец, отправки данных в Solr. Используя обычный компонент Solr , вы можете написать код, который выглядит следующим образом:

from(“file://foo?fileName=input.csv”).unmarshall().csv().split(body()).to("bean:convertToSolrDoc").setHeader(SolrConstants.OPERATION,SolrConstants.INSERT).to(“solr://localhost:8983/solr/collection1”)

Этот код определяет верблюжий маршрут. Этот маршрут принимает CSV-файл, построчно разбивая его на отдельные записи. Для каждой записи (после разделения) она преобразует запись csv в SolrInputDocument. Затем документ Solr отправляется в Solr для вставки.

Помогите нам сделать компонент camel-solr лучше!

Помогите нам сделать компонент camel-solr лучше!

Сильная сторона Camel — возможность связывать данные и функции из разных систем. Возможно, вы хотите построить распределенный конвейер и связать выборы лидера, чтобы одновременно выполнялся только один из этих маршрутов. Ну, вы можете! Просто подключите некоторые функции из компонента Zookeeper.

Встроенный компонент Solr

Компонент Solr имеет большинство основных функций, которые вы ожидаете. Он оборачивает SolrJ и выполняет довольно стандартные операции индексации. Однако по мере того, как мы получаем больше опыта работы с Camel, мы все больше и больше обнаруживаем, что нам не хватает многих столь необходимых функций.

Например, компонент Solr:

  1. Не имеет встроенной поддержки Solr Cloud. Чаще наши клиенты ожидают, что смогут запускать SolrCloud, и хотели бы использовать SolrJ CloudSolrServer для оптимальной маршрутизации документов.
  2. Не поддерживает связь с Solr через https, только http. Даже в доверенных серверных средах многие наши клиенты чувствуют необходимость хранить конфиденциальные данные за https. Так что это становится еще одним обязательным.
  3. Хотя вы можете писать в Solr, нет возможности просмотреть результаты поиска Solr. В терминологии Camel, пока есть производитель Camel, нет и потребителя. Это очень важно для работы, такой как переиндексация из Solr обратно в Solr

Создание лучшего компонента Solr

Итак, что мы сделали? Ну, а не много разовых, мы решили внести существенные улучшения в компонент Camel Solr! Вы можете найти наши усовершенствования здесь готовы к продуктивному использованию ( в частности , это запрос тянуть )! Что было сделано из нашего списка пожеланий выше?

Теперь мы поддерживаем Solr через https (путем указания URI solrs: //) и SolrCloud (путем указания solrCloud в URI и передачи параметров zkHost и collectionName). Например, если бы я хотел переопределить приведенный выше пример для перехода в Solr Cloud, я бы просто сделал:

from(“file://foo?fileName=input.csv”).unmarshall().csv().split(body()).to("bean:convertToSolrDoc").setHeader(SolrConstants.OPERATION,SolrConstants.INSERT).to(“solr://localhost:8983/solr?zkHost=localhost:8123/solr&collectionName=collection1”)

Добиться того, чтобы все это работало, было не очень сложно, но мы хотели убедиться, что все верблюжьи тесты пройдены независимо от того, используется ли Solr по http, https или в облачном режиме. Большая часть сложной работы заключалась в том, чтобы тесты работали с Solr в каждом из этих режимов. Мы узнали много нового о том, как заставить встроенный сервер Jetty Solr работать в https.

Мы особенно благодарны за поддержку MiniSolrCloudCluster, которая была недавно добавлена ​​в Solr 4.8. Это дополнение позволило нам избежать большого объема работы, которую мы начали создавать встроенный сервер Jetty Solr, который работал на сервере Solr Cloud. Вместо этого мы смогли использовать MiniSolrCloudCluster для наших тестов с минимальными усилиями. Фактически, если вам нужен пример использования, отличный от существующих тестов, проверьте этот файл в нашем тестовом коде.

Естественно, мы бы хотели, чтобы эти изменения вернулись в проект Camel. Итак, мы приложили наш запрос на удаление к этой проблеме Jira . Мы надеемся, что вы поможете нам, проголосовав за этот вопрос. В любом случае, пожалуйста, попробуйте наш компонент, и, пожалуйста, не стесняйтесь присылать нам сообщения об ошибках / отзывы / запросы! И следите за обновлениями!

И, конечно же, если вам нужна какая-либо помощь, связывающая разумные возможности для подключения ваших систем к Solr, свяжитесь с нами и воспользуйтесь нашим опытом в Camel и в рамках, которые помогут сделать ваши данные доступными для поиска!