web-dev-qa-db-fra.com

Comment utiliser Elastic Search sur une base de données SQL préexistante?

J'ai lu beaucoup de bonne documentation sur la façon d'implémenter Elastic Search sur un site Web avec javascript ou PHP.

Très bien introduction à ES .

Documentation très complète ici et ici .

Un tout CRUD .

Recherche élastique avec PHP: ici , ici , et ici .

Donc, la raison pour laquelle je vous donne ces URL est de comprendre comment utiliser une ou plusieurs de ces excellentes documentations lorsque vous avez une base de données SQL préexistante.

Je manque quelque chose: comme ils ont dit qu'Elasticsearch créerait ses propres index et bases de données avec MongoDB, je ne comprends pas comment utiliser ma base de données (gigantesque) en utilisant SQL? Disons que j'ai une base de données MySQL et que j'aimerais utiliser Elasticsearch pour accélérer mes recherches et proposer des requêtes prédéfinies à l'utilisateur, comment faire? Comment fonctionne ES sur/le long de MySQL? Comment transférer ce gigantesque ensemble de Datas (plus de 8 Go) dans ES DB afin d'être pleinement efficace au départ?

Merci beaucoup

38
Miles M.

J'utilise jdbc-river w/mysql. C'est très rapide. Vous pouvez les configurer pour interroger en continu les données ou utiliser des importations uniques (stratégie à un coup).

par exemple.

curl -xPUT http://es-server:9200/_river/my_river/_meta -d '
{
    "type" : "jdbc",
    "jdbc" : {
        "strategy" : "simple",
        "poll" : "5s",
        "scale" : 0,
        "autocommit" : false,
        "fetchsize" : 10,
        "max_rows" : 0,
        "max_retries" : 3,
        "max_retries_wait" : "10s",
        "driver" : "com.mysql.jdbc.Driver",
        "url" : "jdbc:mysql://mysql-server:3306/mydb",
        "user" : "root",
        "password" : "password*",
        "sql" : "select c.id, c.brandCode, c.companyCode from category c"
    },
    "index" : {
        "index" : "mainIndex",
        "type" : "category",
        "bulk_size" : 30,
        "max_bulk_requests" : 100,
        "index_settings" : null,
        "type_mapping" : null,
        "versioning" : false,
        "acknowledge" : false
    }
}'
21
Tim

Si vous avez besoin d'une solution plus performante et évolutive pour l'interrogation offerte par jdbc-river, je vous recommande de regarder cette présentation qui explique comment effectuer la synchronisation incrémentielle de SQL Server dans Elastic Search:

Les principes abordés dans la vidéo s'appliquent également aux autres applications de réplication RDBMS -> NoSQL.

4
Tony O'Hagan