2014-11-29 4 views
3

Я собираюсь перестроить мое веб-приложение, чтобы использовать поиск в поиске вместо mysql для поиска, но я точно не знаю, как это сделать.Должен ли я использовать Elastic Search в качестве хранилища данных вместо MySQL?

Я смотрел видео Laracon на нем, так как мое приложение построено на Laravel 4.2, и я буду использовать эту оболочку для запроса: https://github.com/elasticsearch/elasticsearch

Однако, я по-прежнему буду использовать базу данных MySQL к дому данных, а ES искать? Или лучше иметь дом ES и запрашивать данные.

Если я иду по первому маршруту, мне нужно делать операции CRUD с обеих сторон, чтобы они обновлялись?

Может ли ES обрабатывать нагрузку данных, которую может использовать MySQL? Значит сотни миллионов строк?

Я просто очень изумленный, начинаю все это. Я мог бы использовать небольшое направление, было бы весьма признательно. Я никогда не работал с поиском, кроме MySQL.

+0

Хороший вариант использования ES создает индексированный, доступный для поиска фронт JSON для хранилища данных. Этим хранилищем данных может быть MySQL, или файлы журналов, или что-то еще. Он может использовать распределенную систему, но я думаю, что это немного избыточно для бэкэнда приложения Laravel. – Kash

+0

Причина, по которой я спрашиваю, состоит в том, что в базе данных есть миллионы строк, каждый день сотни тысяч добавляются и удаляются, поэтому индекс полнотекстовой информации становится медленнее, и я люблю оптимизировать таблицу каждый день, если я использую поиск по эластичности. Я нахожусь в предположении что он больше не понадобится, и я могу позволить ему выполнять все свои операции, без необходимости каждый день заниматься этим. – Anthony

ответ

1

Я бы порекомендовал хранить MySQL как систему записи и выполнять все операции CRUD из вашего приложения против MySQL. Затем запустите машину ElasticSearch и периодически перемещайте данные из MySQL в ElasticSearch (только те данные, которые необходимо выполнить для поиска).

Затем, если ElasticSearch снизился, вы потеряете только функцию поиска - ваше основное хранилище данных все еще в порядке.

ElasticSearch может быть настроен как кластер и может масштабироваться очень большой, поэтому он будет обрабатывать количество строк.

Чтобы получить данные в упругий, вы можете сделать несколько вещей:

  1. ли первоначальный импорт (очень медленно, очень большое), а затем просто скопировать с посмотреть различие процесса. Вы можете рассмотреть что-то вроде Mule ESB для перемещения данных (http://www.mulesoft.org/).

  2. Когда вы пишете данные из своего приложения, вы можете написать один раз в MySQL, а также написать те же данные в Elastic. Это обеспечивает данные в режиме реального времени в Elastic, но, конечно, если вторая запись в Elastic терпит неудачу, тогда вам не удастся получить данные.