> А почему ты это логосвалкой называешь?Потому что это и есть логосвалка с вебинтерфейсом в которой есть поиск на базе Apache Lucene.
> Но как бы практически везде, где нужен нормальный full text поиск с ранжированием по релевантности, поддержкой автодополнения и прочим - это пилят на ES или, реже, Sphinx/Manticora.
> У нас на проекте карточки товара хранились в эластике с кросс-поиском по 10 полям + ещё 20 полей учитывались как источники весовых коэффициентов для ранжирования результатов по релевантности.
То есть вам нужно было запилить по-своему кастомизированный полнотекстовый поиск по номенклатурно-справочной информации. Для каждой задачи есть свой подходящий инструмент. Используя ELK для работы с НСИ особенно в вопросах:
- сайтов интернет-магазинов,
- внутренних порталов подбора номенклатуры
Вы, как бы это сказать, дрелью гвозди забивали. И я понимаю, что переделывать никто не будет, но человек который вам предложил такое внедрить не друг вам совсем и лучше его уволить или отлучить от принятия архитектурных решений.
Просто научитесь использовать Apache Solr: https://solr.apache.org/
Solr - это инфраструктура полнотекстового поиска и распределенного кэша, которую можно прикрутить куда угодно и использовать для любых типов основных данных предприятия (НСИ, MDM как угодно их назовите)
При этом если вам нужен crawling каких-то данных вы используете в довесок
+ Apache Nutch: https://nutch.apache.org/
+ Apache Tika: https://tika.apache.org/
Собственно не удивлюсь, что в своем проекте вы Nutch прикрутили для ранжирования результатов.
Сам факт существования Elasticsearch и вся его архитектура и хранилище сводится к простой проблеме. Solr медленнее ищет по динамически меняющемуся хранилищу timeseries-данных. Все дело в том, что инфраструктура кэширования Solr из коробки затюнена под работу с карточками товаров, а не с логами. Ну вот поэтому и написали поверх той же Lucene, но с другими оптимизациями в архитектуре.
Timeseries очень сильно отличается от MDM/НСИ и прочих данных которые хранят в RDBMS и каталогах. Их в обычную современную базу-то положить - горя хапнешь по производительности. Поэтому их кладут в:
- Традиционные ISAM-хранилища, вроде Microsoft ESE (Jet Blue), Berkley DB, MariaDB Aria.
- NoSQL, собственно ELK так делает.
Кроме того при кэшировании нужно учитывать, что данные постоянно дописываются. Это влияет на архитектуру кэша. Люди не меняют карточки товаров раз в секунду, в отличии от timeseries...
> Интересно, у тебя всегда синдром д'Артаньяна или так, временами.
Вы на полном серьезе пишете, что используете ELK для номенклатуры, даже не стыдясь собственного невежества и еще и хамите старшим, фу таким быть. https://en.wikipedia.org/wiki/Dunning%E2%80%9...