elasticsearch-jdbc
环境
- Ubuntu 14.04
- JDK 1.8.0_66
- Elasticsearch 2.3.1
- Elasticsearch-jdbc 2.3.1.0
- Elasticsearch单节点环境
进入es目录~/cluster/elasticsearch-2.3.1
下载elasticsearch-jdbc包,并解压
$ wget http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.1.0/elasticsearch-jdbc-2.3.1.0-dist.zip $ unzip elasticsearch-jdbc-2.3.1.0-dist.zip
数据库中的数据
数据位于10.110.1.47:3306下的ispider_data数据库,表名为es_test
共三条数据如下:id name4 zhangsan2 lisi3 wangwu
编辑数据导入脚本import.sh
vi import.sh
输入:bin=/home/es/cluster/elasticsearch-2.3.1/elasticsearch-jdbc-2.3.1.0/binlib=/home/es/cluster/elasticsearch-2.3.1/elasticsearch-jdbc-2.3.1.0/libecho '{"type" : "jdbc","jdbc": {"url":"jdbc:mysql://10.110.1.47:3306/ispider_data", "user":"root", "password":"123456a?", "sql":"select * from es_test", "index" : "customer", "type" : "external" }}' | java \ -cp "${lib}/*" \ -Dlog4j.configurationFile=${bin}/log4j2.xml \ org.xbib.tools.Runner \ org.xbib.tools.JDBCImporter
上述,将MySQL中的数据建立为es中索引为customer,类型为external中。
查询索引
es@search1:~/cluster/elasticsearch-2.3.1$ curl 'localhost:9200/customer/external/_search?pretty&q=*'
结果显示:
{ "took" : 6, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 3, "max_score" : 1.0, "hits" : [ { "_index" : "customer", "_type" : "external", "_id" : "AVQ8--xAkvh0m5n1OUEo", "_score" : 1.0, "_source" : { "id" : "4", "name" : "zhangsan" } }, { "_index" : "customer", "_type" : "external", "_id" : "AVQ8--xBkvh0m5n1OUEq", "_score" : 1.0, "_source" : { "id" : "3", "name" : "wangwu" } }, { "_index" : "customer", "_type" : "external", "_id" : "AVQ8--xBkvh0m5n1OUEp", "_score" : 1.0, "_source" : { "id" : "2", "name" : "lisi" } } ] } }
可见,_source中的各个字段field,与数据库中的各列对应。
注意,_source中的id是es_test表中的id列,索引中document的id是自动生成的,二者并不一样。至此,从数据库MySQL导入ES建立索引的过程就完成了。参考资料
http://www.voidcn.com/blog/kdchxue/article/p-5778237.html