在我的一个项目中,我计划将ElasticSearch与mysql一起使用。我已经成功安装了ElasticSearch。我能够单独管理ES中的索引。但我不知道如何用mysql实现相同的功能。
我已经阅读了几份文件,但我有点困惑,不清楚。谁能帮帮我吗?
提前致谢。
终于我找到了答案。分享我的发现。
要将ElasticSearch与Mysql一起使用,您将需要Java数据库连接( JDBC )导入程序。使用JDBC驱动程序,您可以将mysql数据同步到elasticsearch中。
我正在使用ubuntu 14.04 LTS,您将需要安装Java8才能运行Elasticsearch,因为它是用Java编写的
以下是安装 ElasticSearch 2.2.0和ElasticSearch-jdbc 2.2.0的步骤 ,请注意, 两个版本必须相同
在安装Java8 .....之后,按如下所示安装elasticsearch 2.2.0
# cd /opt # wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.2.0/elasticsearch-2.2.0.deb # sudo dpkg -i elasticsearch-2.2.0.deb
此安装过程会将Elasticsearch安装在/ usr / share / elasticsearch /中,其配置文件将放置在/ etc / elasticsearch中。
现在让我们在配置文件中进行一些基本配置。/etc/elasticsearch/elasticsearch.yml是我们的配置文件,您可以打开文件进行更改
nano /etc/elasticsearch/elasticsearch.yml
并更改集群名称和节点名称
例如 :
# ---------------------------------- Cluster ----------------------------------- # # Use a descriptive name for your cluster: # cluster.name: servercluster # # ------------------------------------ Node ------------------------------------ # # Use a descriptive name for the node: # node.name: vps.server.com # # Add custom attributes to the node: # # node.rack: r1
现在保存文件并开始elasticsearch
/etc/init.d/elasticsearch start
测试已安装或未运行的ES
curl -XGET 'http://localhost:9200/?pretty'
如果您得到关注,那么您的elasticsearch现在已安装:)
{ "name" : "vps.server.com", "cluster_name" : "servercluster", "version" : { "number" : "2.2.0", "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe", "build_timestamp" : "2016-01-27T13:32:39Z", "build_snapshot" : false, "lucene_version" : "5.4.1" }, "tagline" : "You Know, for Search" }
现在让我们安装 elasticsearch-JDBC
http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch- jdbc/2.3.3.1/elasticsearch- jdbc-2.3.3.1-dist.zip从中下载它,并将其解压缩到/ etc / elasticsearch /中,并在那里也创建“ logs”文件夹(日志路径应为/ etc / elasticsearch / logs)
http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch- jdbc/2.3.3.1/elasticsearch- jdbc-2.3.3.1-dist.zip
我在mysql中创建了一个名为“ ElasticSearchDatabase ”的数据库,并在该 表中名为“ test”的表, 其中包含字段ID,名称和电子邮件
cd /etc/elasticsearch
然后运行
echo '{ "type":"jdbc", "jdbc":{ "url":"jdbc:mysql://localhost:3306/ElasticSearchDatabase", "user":"root", "password":"", "sql":"SELECT id as _id, id, name,email FROM test", "index":"users", "type":"users", "autocommit":"true", "metrics": { "enabled" : true }, "elasticsearch" : { "cluster" : "servercluster", "host" : "localhost", "port" : 9300 } } }' | java -cp "/etc/elasticsearch/elasticsearch-jdbc-2.2.0.0/lib/*" -"Dlog4j.configurationFile=file:////etc/elasticsearch/elasticsearch-jdbc-2.2.0.0/bin/log4j2.xml" "org.xbib.tools.Runner" "org.xbib.tools.JDBCImporter"
现在检查是否在ES中导入了mysql数据
curl -XGET http://localhost:9200/users/_search/?pretty
如果一切顺利,您将能够以json格式查看所有mysql数据,如果有任何错误,您将可以在/etc/elasticsearch/logs/jdbc.log文件中查看它们
注意事项:
在旧版本的ES中,使用的插件 Elasticsearch-river-jdbc 在最新版本中已完全弃用,因此请不要使用它。
我希望我可以节省您的时间:)
任何进一步的想法表示赞赏
参考网址:https : //github.com/jprante/elasticsearch- jdbc