使用JDBC驱动程序将MongoDB和Elasticsearch进行集成

首先

Elasticsearch是一个能够在几乎实时搜索所有类型的文档的搜索引擎。
而MongoDB则是非常流行的NoSQL数据库,它使用JSON数据模型进行数据存储,但如果能够使用标准SQL对MongoDB进行CRUD操作,可能会更好。

在这篇文章中,我们将介绍如何利用DataDirect连接器,通过JDBC将数据从MongoDB传输到Elasticsearch,以实时进行分析。关于DataDirect连接器的更多信息,请参阅DataDirect for MongoDB JDBC驱动程序。

前提条件:Elasticsearch 2.3.4与MongoDB。

如果没有数据, 请使用 MongoDB 提供的 Restaurant样本数据。

DataDirect for MongoDB JDBC连接器的安装

作为试用,您可以从这里下载DataDirect MongoDB用的连接器。

只需要一个选项:在解压缩后。

PROGRESS_DATADIRECT_JDBC_INSTALL.exe 的安装程序

执行,并安装MongoDB的连接器。

在Elasticsearch中配置JDBC导入器。

    1. 请从这里下载并解压Elasticsearch的JDBC导入程序。

 

    1. 将DataDirect MongoDB JDBC连接器(mongodb.jar)

 

    1. 从C:\ProgramFiles\Progress\DataDirect\JDBC_60\lib

 

    1. 复制到

 

    1. \path\elasticsearch-jdbc-2.3.4.0\lib文件夹中。

 

    进入\path\elasticsearch-jdbc-2.3.4.0\bin目录,创建一个bat文件,并保存以下脚本。
@echo off

set DIR=%~dp0
set LIB=%DIR%..\lib\*
set BIN=%DIR%..\bin

REM ???
echo {^
"type" : "jdbc",^
"jdbc" : {^ "url" : "jdbc:datadirect:mongodb://:27017;DatabaseName=;TransactionMode=Ignore",^
"user" : "",^
"password" : "",^
"sql" : "select BOROUGH, RESTAURANT_ID, CUISINE, NAME, _ID from restaurants",^
"elasticsearch" : {^
"cluster" : "elasticsearch",^
"host" : "localhost",^
"port" : 9300^
},^
"index" : "restaurants"^
}^ }^ | "%JAVA_HOME%\bin\java" -cp "%LIB%" -Dlog4j.configurationFile="%BIN%\log4j2.xml" "org.xbib.tools.Runner" "org.xbib.tools.JDBCImporter"

将MongoDB数据导入Elasticsearch中。

1、一旦连接建立成功后,转到Elasticsearch安装文件夹,并使用命令来执行,如果尚未执行。

bin\elasticsearch.bat

2, 进入\path\elasticsearch-jdbc-2.3.4.0\bin目录,并执行之前创建的批处理文件,开始将MongoDB中的数据导入Elasticsearch。导入结果可以在日志文件夹中的jdbc.log中进行确认。

数据搜索

由于MongoDB数据位于Elasticsearch节点上,您可以自由自在地进行搜索。以下是一些示例供参考。

只有在按照上述步骤设置本地Elasticsearch环境后,这些链接才有效。

http://localhost:9200/餐厅/
http://localhost:9200/餐厅/_搜索
http://localhost:9200/餐厅/_搜索?q=菜系:中国菜

真的非常简单啊!