ElasticSearch@Windows使用指南

时间:2021-05-22 05:19:09

首先下载ElasticSearch zip包,网上有个网友说目前Windows支持的最高版本是 1.7.3,我就没敢使用更高的了,不过我是为了快速测试,所以对版本要求不严。下载后解压到某个目录下。

然后下载ElasticSearch-jdbc zip 包,这个是用来从关系型数据库导数据建索引的一个插件,同样是1.7.3版本。如果需要中文分词的插件,还需要从 github 上下载 ik zip 包。

ElasticSearch@Windows使用指南

这两个插件必须解压到 ElasticSearch 的 plugins 目录下,如果没有就自行创建一个。大致上下面这个样子,我是直接把 elasticsearch-jdbc里面的东西直接放到 plugins下面,而中文分词的放在了 ik 文件夹下。

ElasticSearch@Windows使用指南

然后编写生成 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@Windows使用指南

再就开始索引生成工作了,首先让 ElasticSearch 服务起来,直接运行 elasticsearch.bat :

ElasticSearch@Windows使用指南

等待 ES 服务完全好了后,就可以用 ES-jdbc 导数据建索引了,很简单,这个时候只需要执行 jdbc/bin 下面的 oracle_to_es.bat 脚本:

ElasticSearch@Windows使用指南

系统会 oracle_to_es.bat 所在的目录下生成一个 logs 文件夹,里面有个 jdbc.log 文件,如果出错或成功,都有记录:

ElasticSearch@Windows使用指南

如果索引创建成功,日志大约是这样子的:

[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

此时可以通过浏览器检查下索引情况:

ElasticSearch@Windows使用指南