Dois-je utiliser Elastic Search comme magasin de données au lieu de MySQL?

Je suis sur le sharepoint reconstruire mon application Web pour utiliser la recherche élastique au lieu de mysql à des fins de recherche, mais je ne sais pas exactement comment procéder.

J’ai regardé une vidéo de Laracon, car mon application est construite sur Laravel 4.2, et j’utiliserai ce wrapper pour interroger: https://github.com/elasticsearch/elasticsearch

Cependant, vais-je toujours utiliser la firebase database MySQL pour héberger les données et demander à ES de les rechercher? Ou est-il préférable d’avoir ES héberger et interroger les données.

Si je fais le premier itinéraire, dois-je effectuer des opérations CRUD des deux côtés pour les tenir à jour?

ES peut-il gérer le chargement de données que MySQL peut? Ce qui signifie des centaines de millions de lignes?

Je suis juste très déraisonnable en commençant tout ça. Je pourrais utiliser un peu de direction, ce serait grandement apprécié. Je n’ai jamais travaillé avec une recherche autre que MySQL.

Je recommande de garder MySQL comme système d’enregistrement et de faire toutes les opérations CRUD depuis votre application contre MySQL. Ensuite, démarrez une machine ElasticSearch et déplacez régulièrement les données de MySQL vers ElasticSearch (uniquement les données à rechercher).

Ensuite, si ElasticSearch tombe en panne, vous ne perdez plus que la fonction de recherche – votre magasin de données principal est toujours correct.

ElasticSearch peut être configuré en tant que cluster et peut évoluer de manière très volumineuse, de manière à gérer le nombre de lignes.

Pour obtenir des données dans Elastic, vous pouvez faire plusieurs choses:

  1. Faites une importation initiale (très lente, très grande), puis copiez simplement les diffs avec un processus. Vous pourriez envisager quelque chose comme Mule ESB pour déplacer des données ( http://www.mulesoft.org/ ).

  2. Lorsque vous écrivez des données à partir de votre application, vous pouvez écrire une fois dans MySQL et écrire les mêmes données dans Elastic. Cela fournit des données en temps réel dans Elastic, mais bien sûr, si la deuxième écriture sur Elastic échoue, vous manquerez les données.