Опишу алгоритм работы приложения:
Парсится открытый API источник информации (50-100 ГБ в сутки, много дублирующей информации, реально хранится из этого в десятки-сотни тысяч раз меньше). Есть необходимость (в общем и целом это не обязательно, но крайне желательно) отдавать информацию в реальном времени по определенным запросам ("клиентов" может быть много, т.е. больше одного и это меня на данный момент слегка пугает и ничего лучше чем отдавать каждому результат до добавления в базу я пока придумать не могу, опыта у меня мало).
Вопрос №1
Есть ли в ElasticSearch какая либо "встроенная" реализация подобного функционала? Если нет, то как лучше всего это реализовать?
Вопрос №2
В ElasticSearch нет никакой связей (как это реализовано, например, в SQL). Как реализовать поддержку разных языков? На данный момент я вижу лишь 1 выход из этой ситуации - вынос языков из базы в тот же SQL, но если честно этот вариант мне кажется медленным и нагруженным.
PS На данный момент я лишь планирую (что бы не наделать костылей уже во время разработки), скорее всего буду использовать Node.js + MongoDB (для хранения статики).
Для определения набора "клиентов" можно воспользоваться перколятором, но запуск запроса к перколятору и оповещение клиентов вам придется делать самому.
Я не понял этот вопрос, о каких языках идет речь и какой аспект поддержки вас интересует? Вы не могли бы объяснить более подробно с примером документов и запросов, которые вы планируете запускать.
Во втором вопросе я имею в виду самые обычные языки (т.е. выводить для англоговорящих людей - результаты на английском, а для русскоговорящих - те же самые результаты, но на русском языке).
Видимо речь за корреляцию данных, для этого можно писать всё в эластик, потом проходить их с временным интервалом, обрабатывать и результат писать уже отдельно. Для смотреть надо в сторону logstash.
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.