Я собираюсь перестроить свое веб-приложение, чтобы использовать упругий поиск вместо mysql для целей поиска, но я точно не знаю, как это сделать.
Я посмотрел видео Laracon, так как мое приложение построено на Laravel 4.2, и я буду использовать эту оболочку для запроса: https://github.com/elasticsearch/elasticsearch
Тем не менее, я все еще собираюсь использовать базу данных MySQL для размещения данных, и ES ищет ее? Или лучше иметь ES дома и запрашивать данные.
Если я иду по первому пути, нужно ли выполнять CRUD-операции с обеих сторон, чтобы их обновлять?
Может ли ES справиться с такой нагрузкой, как MySQL? Имеются в виду сотни миллионов строк?
Я просто очень осторожен в начале всего этого. Я мог бы использовать небольшое направление, это было бы очень ценно. Я никогда не работал с поиском, кроме MySQL.
Я бы порекомендовал сохранить MySQL в качестве системы записи и выполнять все операции CRUD из вашего приложения с MySQL. Затем запустите машину ElasticSearch и периодически перемещайте данные из MySQL в ElasticSearch (только те данные, по которым вам нужно искать).
Затем, если ElasticSearch отключится, вы потеряете только функцию поиска — ваше основное хранилище данных все еще в порядке.
ElasticSearch может быть настроен как кластер и может масштабироваться очень большой, поэтому он будет обрабатывать количество строк.
Чтобы получить данные в Elastic, вы можете сделать несколько вещей:
Сделайте первоначальный импорт (очень медленный, очень большой), а затем просто скопируйте diff с процессом. Вы можете рассмотреть что-то вроде Mule ESB для перемещения данных (http://www.mulesoft.org/).
Когда вы записываете данные из своего приложения, вы можете один раз записать в MySQL, а также записать те же данные в Elastic. Это обеспечивает получение данных в реальном времени в Elastic, но, конечно, если вторая запись в Elastic не удастся, вы пропустите данные.
Других решений пока нет …