Что плохого в пользовании как реляционной базой?)
Я не раз встречаю такое использование и сам сейчас пробую сделать листинг объектов на эластике.
Вывод постранично и по параметрам тоже можно считать поиском )
На монге похожая схема хранения документов и пользуются же.
Я согласен с тем, что внешне Elasticsearch и реляционные базы в чем-то похожи. Обе системы позволяют хранить данные и получать данные обратно с помощью языка запросов. Многие пользователи Elasticsearch переходят на него с SQL, и поэтому идея использования SQL для поиска Elasticsearch не нова. Если у вас хорошо с английским, я бы мог посоветовать посмотреть вот эту презентацию, в которой рассказывается, как "перевести" многие запросы из SQL в elasticsearch и я знаю как минимум 3 проекта, которые пытаются сделать это автоматически.
Однако, с моей точки зрения, использование SQL для поиска по Elasticsearch будет скорее вредить пользователям, чем им помогать. Из моего опыта, использование elasticsearch как реляционной базой не приводит ни к чему хорошему, потому что эти системы похожи только на поверхности. При серьезной нагрузке и масштабе, внутренние различия становятся все более и более важны, и в долгосрочной перспективе, вам будет гораздо легче, если вы начнете с самого начала подходить к Elasticsearch как поисковому и аналитическому движку, а не как к базе данных.
Чтобы не быть голословным, приведу несколько примеров. При моделировании данных в реляционной базе, стандартной практикой является нормализация данных, что во многих случаях является абсолютно неприемлемым решеним для Elasticsearch из-за отсутствия в нем механизмов объединения запросов по нескольким таблицам. При этом, вместо того, чтобы пользоваться мощным механизмом анализа и поиска текста, прямая миграция с реляционной базы обычно приводит к индексированию всех поле без анализа и поиском по *foobar*, что опять же является одним из самых неоптимальных запросов в Elasticsearch. Хотя агрегации и напоминают группировку, это совсем другой процесс, и то, что возможно добиться группировкой, не всегда можно реализовать через агрегацию и наоборот. Поисковые движки оптимизированы для поиска по большому количеству полей одновременно, и индексирование данных никогда не блокирует чтение и поиск, но при этом требования ACID в поисковых движках либо не поддерживаются совсем, либо работают только на уровне одной записи, и т.д.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.