Elasticsearch 提供强大的搜索功能,支持数据的分片和复制。所以我们希望将数据库中可用的数据索引到 Elasticsearch 中。
有多种方法可以将数据索引到 Elasticsearch 中:
在本文中,我们将研究方法 2,即使用作为单独进程运行的外部库。
我们将使用 MySQL 作为数据库,并使用 MySQL 自带的示例数据库 world,,其表如下:
Elasticsearch-jdbc 库最高支持 Elasticsearch 2.3.4,其 GitHub 页面 上提供了兼容性矩阵。首先,让我们在不在 Elasticsearch (ES) 中预先定义索引结构的情况下对数据进行索引。如果我们不提供索引结构,ES 会根据索引的数据推断并构建一个。但这并不总是一个理想的结构。
确保 ES 正在运行。如果你在 windows 上,然后导航到 ES 的 bin 目录并运行 elasticsearch.bat。如果您使用的是 Linux,请按照此处 的说明进行操作。
要创建空索引,您必须向
curl -X POST localhost:9200/world
您甚至可以使用您选择的 REST 客户端(如 Postman)来调用 ES REST API
从这里下载elasticsearch-jdbc 二进制文件并将其解压到一个文件夹中,我们称它为ES_IMPORTER。在 ES_IMPORTER/bin 中已经有可用的脚本来处理 MySQL 和其他数据库,我们将把所有与导入相关的脚本放在同一个文件夹中。
注意:如果您使用的是 Oracle DB,则需要将 JDBC 驱动程序放在 ES_IMPORTER/lib 文件夹中。对于 MySQL 等其他数据库,PostgreSql JDBC 驱动程序已经可用。
另一个注意事项:elasticsearch-jdbc 需要 JDK 8
我们将创建以下文件(链接中提供的代码)来运行导入程序:
JDBC 连接字符串、数据库用户名和密码可以在 world-importer-config.json 中更新。此外,ES 端口、ES 主机名、ES 索引名称、ES 索引类型名称可以在同一个文件中更新。
在运行导入器之前,打开 URL:http://localhost:9200/world
上面显示索引世界没有定义结构
打开网址:http://localhost:9200/world/_search
上面显示索引世界中没有数据。
导航至目录:ES_IMPORTER/bin 并运行world-importer.bat 或 world-importer.sh。
导入程序完成后(应该几乎立即完成),打开 URL:http://localhost:9200/world/。您现在将看到索引有一个结构,也称为映射,在 mappings 键中定义。当您打开 URL:http://localhost:9200/world/_search 时,您会发现索引数据大约为 命中领域。
在本文的下一部分中,我们将:
标签2: Java教程地址:https://www.cundage.com/article/jcg-index-data-relational-database-elasticsearch-1.html