首先下载ElasticSearch zip包,网上有个网友说目前Windows支持的最高版本是 1.7.3,我就没敢使用更高的了,不过我是为了快速测试,所以对版本要求不严。下载后解压到某个目录下。
然后下载ElasticSearch-jdbc zip 包,这个是用来从关系型数据库导数据建索引的一个插件,同样是1.7.3版本。如果需要中文分词的插件,还需要从 github 上下载 ik zip 包。
这两个插件必须解压到 ElasticSearch 的 plugins 目录下,如果没有就自行创建一个。大致上下面这个样子,我是直接把 elasticsearch-jdbc里面的东西直接放到 plugins下面,而中文分词的放在了 ik 文件夹下。
然后编写生成 ES 索引的脚本,放到 jdbc 的 bin 目录下, 还需要写一个.bat脚本去执行这个索引生成脚本。
1. 索引生成脚本 jdbc_oracle.json :
{ "type": "jdbc", "jdbc": { "url": "jdbc:oracle:thin:@<server>:1521:HEBTA_PDB", "user": "IMEDSCN", "password": "1med$cnHebt@", "sql":"select concept_id as \"_id\", concept_name from concept", "schedule" : "0 42 18 ? * *", "index": "concept_index", "type": "url" } }2. oracle_to_es.bat 脚本:
set DIR=D:\Allen\software\elasticsearch-1.7.3\plugins set LIB="%DIR%\lib\*" set BIN="%DIR%\bin\*" "%JAVA_HOME%\bin\java" -cp "%LIB%" -Dlog4j.configurationFile=file://%DIR%\bin\log4j2.xml "org.xbib.tools.Runner" "org.xbib.tools.JDBCImporter" jdbc_oracle.json
由于我的关系型数据库是oracle,所以需要引入 ojdbc6.jar,还需要引入 ElasticSearch 依赖的 lucene-**.jar (貌似只需要 lucene-core-4.10.4.jar),我为了方便吧 ElasticSearch/lib/lucene-**.jar 全部拷贝到 jdbc/lib 下:
再就开始索引生成工作了,首先让 ElasticSearch 服务起来,直接运行 elasticsearch.bat :
等待 ES 服务完全好了后,就可以用 ES-jdbc 导数据建索引了,很简单,这个时候只需要执行 jdbc/bin 下面的 oracle_to_es.bat 脚本:
系统会 oracle_to_es.bat 所在的目录下生成一个 logs 文件夹,里面有个 jdbc.log 文件,如果出错或成功,都有记录:
如果索引创建成功,日志大约是这样子的:
[13:57:27,273][INFO ][importer.jdbc ][main] index name = concept_index, concrete index name = concept_index [13:57:27,293][INFO ][importer.jdbc ][pool-2-thread-1] strategy standard: settings = {password=1med$cnHebt@, type=url, user=IMEDSCN, index=concept_index, sql=select concept_id as "_id", concept_name from concept, url=jdbc:oracle:thin:@120.26.137.71:1521:HEBTA_PDB}, context = org.xbib.elasticsearch.jdbc.strategy.standard.StandardContext@17e34044 [13:57:27,297][INFO ][importer.jdbc.context.standard][pool-2-thread-1] found sink class org.xbib.elasticsearch.jdbc.strategy.standard.StandardSink@1c4d9716 [13:57:27,325][INFO ][importer.jdbc.context.standard][pool-2-thread-1] found source class org.xbib.elasticsearch.jdbc.strategy.standard.StandardSource@21e2ce04 [13:57:27,366][INFO ][BaseTransportClient ][pool-2-thread-1] creating transport client, java version 1.8.0_60, effective settings {cluster.name=elasticsearch, port=9300, sniff=false, autodiscover=false, name=importer, client.transport.ignore_cluster_name=false, client.transport.ping_timeout=5s, client.transport.nodes_sampler_interval=5s} [13:57:27,428][INFO ][org.elasticsearch.plugins][pool-2-thread-1] [importer] loaded [support-1.7.0.0-8e7ca71], sites [] [13:57:28,269][INFO ][BaseTransportClient ][pool-2-thread-1] trying to connect to [inet[localhost/127.0.0.1:9300]] [13:57:28,674][INFO ][BaseTransportClient ][pool-2-thread-1] connected to [[Fashima][F3zSJ0ZOSOewNr4VAzzmVA][leizj-PC][inet[localhost/127.0.0.1:9300]]] [13:57:28,703][INFO ][importer.jdbc.sink.standard][pool-2-thread-1] creating index concept_index with settings = and mappings = [13:57:29,056][INFO ][BaseIngestTransportClient][pool-2-thread-1] index concept_index created
此时可以通过浏览器检查下索引情况: