Очистка данных в Python для очистки PDF

Представьте пример использования:

  1. Множество (100+) небольших (10Mb-100Mb, 1000-100000 документов) индексов поиска.
  2. Они используют много приложений (микросервисы)
  3. Каждое приложение может использовать более одного индекса
  4. Индекс малого размера, да. Но огромная нагрузка (сотни запросов поиска в секунду) и запросы сложны (множественные агрегации, условия и т. Д.)
  5. Время простоя не разрешено
  6. Все это работает много лет, и постоянно растет.

Идея иметь отдельный экземпляр ES для каждого индекса - в этом случае огромные накладные расходы.

Основываясь на моем опыте, такой вариант использования

FIRST.

Основная проблема - игнорирование фундаментальной обратной совместимости.

. так здорово! (Примечание: представьте себе SQL-сервер, который потребует от вас небольших изменений во всех ваших SQL-операторах, когда он обновлен ... не может этого себе представить. Но для ES это нормально)

Утечки, которые будут удалены следующий крупный релиз настолько сексуальный! (Примечание: вы знаете, Java содержит некоторые изъяны, которые старше 20 лет, но все еще работают в реальной версии Java ...)

И не только это, иногда у вас даже есть то, что нигде не задокументировано (лично натолкнулся только один раз, но ...)

Итак. Если вы хотите обновить ES (потому что вам нужны новые функции для какого-либо приложения или вы хотите получить исправления ошибок), вы находитесь в аду. Особенно, если речь идет о основном обновлении версии.

Клиентский API не будет обратно совместим. Установки индекса не будут совместимы. И обновление всех приложений / служб в тот же момент с обновлением ES нереально.

Но вы должны делать это время от времени. Нет другого способа.

Существующие индексы автоматически обновляются? - Да. Но это не поможет вам, когда вам нужно будет изменить некоторые настройки старого индекса.

Чтобы жить с этим, вам нужно постоянно вкладывать много энергии в ... передовую совместимость ваших приложений / услуг с будущим релизы ES. Или вам нужно построить (и в любом случае постоянно поддерживать) какое-то промежуточное ПО между вашими приложениями / услугами и ES, которые предоставляют вам совместимый клиентский API. (И вы не можете использовать Transport Client (потому что для обновления любой младшей версии ES требуется обновление jar), и этот факт не облегчает вашу жизнь).

Это выглядит просто и доступно. дешево? Нет, это не так. Отнюдь не. Непрерывное обслуживание сложной инфраструктуры, основанной на ES, является дорогой во всех возможных смыслах.

SECOND. Простой API? Ну ... нет. Когда вы действительно используете сложные условия и агрегации ... JSON-запрос с 5 вложенными уровнями - это что угодно, но не просто.


К сожалению, у меня нет опыта работы с SOLR, не могу сказать что-нибудь об этом.

Но Sphinxsearch намного лучше этого сценария, поскольку полностью совместим с SphinxQL.

Примечание: Sphinxsearch / Manticore действительно интересны. Это не основанный на Люсине, а результат сильно отличается. Содержит несколько уникальных функций из коробки, которые ES не имеют и сумасшедшие быстро с индексами малого / среднего размера.

0
задан Wee Kim Fong 21 February 2019 в 04:37
поделиться