web-dev-qa-db-ja.com

既存のSQLデータベースの上でElastic Searchを使用する方法は?

私は、JavaScriptまたはPHPを使用してWebサイトにElastic Searchを実装する方法に関する多くの優れたドキュメントを読んでいます。

非常に良い ESの紹介

非常に完全なドキュメント here および here

全体 [〜#〜] crud [〜#〜]

PHPによる弾性検索: herehere 、および here

そのため、これらのURLを提供する理由は、既存のSQL DBを使用する際にこれらの優れたドキュメントの1つまたは複数を使用する方法を理解するためです。

私はどこかにポイントを失っています:ElasticsearchがMongoDBで独自のインデックスとDBを作成すると言ったように、SQLを使用して(巨大な)データベースを使用する方法がわかりませんか? MySQL DBがあり、Elasticsearchを使用して研究を高速化し、ユーザーが事前に作成したクエリを提案したい場合、どうすればよいですか? ESがMySQL上でどのように機能しますか?最初に完全に効率的にするために、この巨大なデータセット(8GB以上)をES DBに転送する方法は?

どうもありがとう

38
Miles M.

jdbc-river w/mysqlを使用しています。とても速いです。データを継続的にポーリングするように構成したり、1回限りの(1回限りの)インポートを使用したりできます。

例えば.

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

Jdbc-riverが提供するポーリングに対してより高性能でスケーラブルなソリューションが必要な場合は、SQL ServerからElastic Searchへの増分同期を実行する方法を説明するこのプレゼンテーションをご覧になることをお勧めします。

ビデオで説明した原則は、他のRDBMS-> NoSQLレプリケーションアプリケーションにも適用されます。

4
Tony O'Hagan