38

我一直在阅读很多关于如何使用 javascript 或 PHP 在网站上实现 Elastic Search 的优秀文档。

很好的 ES 介绍

非常完整的文档herehere

一个完整的CRUD

使用 PHP 进行弹性搜索:hereherehere

因此,我给您提供这些 URL 的原因是为了了解在拥有预先存在的 SQL DB 时如何使用这些优秀文档中的一个或多个。

我在某处遗漏了要点:正如他们所说,Elasticsearch 将使用 MongoDB 创建自己的索引和数据库,我不明白如何使用 SQL 使用我的(巨大的)数据库?假设我有一个 MySQL 数据库,我想使用 Elasticsearch 来加快我的研究速度并提出用户预先制作的查询,我该怎么做?ES 如何在 MySQL 之上/沿着 MySQL 工作?如何将这组庞大的数据集(超过 8GB)传输到 ES DB 以便在开始时充分高效?

非常感谢

4

2 回答 2

21

我正在使用带 mysql的 jdbc-river 。它非常快。您可以将它们配置为持续轮询数据,或使用一次性(一次性策略)导入。

例如

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
    }
}'
于 2013-07-25T20:54:51.743 回答
4

如果您需要针对 jdbc-river 提供的轮询提供更高性能和可扩展性的解决方案,我建议您观看此演示文稿,该演示文稿解释了如何执行从 SQL Server 到 Elastic Search 的增量同步:

视频中讨论的原则也适用于其他 RDBMS -> NoSQL 复制应用程序。

于 2015-03-15T14:51:08.777 回答