elasticsearch-jdbc实现MySQL同步到ElasticSearch深入详解

来源:互联网 发布:武功已臻化境知乎 编辑:程序博客网 时间:2024/06/05 20:20

1.如何实现mysql与elasticsearch的数据同步?

逐条转换为json显然不合适,需要借助第三方工具或者自己实现。核心功能点:同步增、删、改、查同步。

2、mysql与elasticsearch同步的方法有哪些?优缺点对比?

目前该领域比较牛的插件有:

1)、elasticsearch-jdbc,严格意义上它已经不是第三方插件。已经成为独立的第三方工具。https://github.com/jprante/elasticsearch-jdbc 
2)、elasticsearch-river-MySQL插件 https://github.com/scharron/elasticsearch-river-mysql 
3)、Go-mysql-elasticsearch(国内作者siddontang) https://github.com/siddontang/go-mysql-elasticsearch

1-3同步工具/插件对比:

go-mysql-elasticsearch仍处理开发不稳定阶段。 
为什么选择elasticsearch-jdbc而不是elasticsearch-river-mysql插件的原因?(参考:http://stackoverflow.com/questions/23658534/using-elasticsearch-river-mysql-to-stream-data-from-mysql-database-to-elasticsea) 
1)通用性角度:elasticsearch-jdbc更通用, 
2)版本更新角度:elasticsearch-jdbc GitHub活跃度很高,最新的版本2.3.3.02016年5月28日兼容Elasticsearch2.3.3版本。 
而elasticsearch-river-mysql 2012年12月13日后便不再更新。 
综上,选择elasticsearch-jdbc作为mysql同步Elasticsearch的工具理所当然。

elasticsearch-jdbc的缺点与不足(他山之石):

1)、go-mysql-elasticsearch作者siddontang在博客提到的: 
elasticsearch-river-jdbc的功能是很强大,但并没有很好的支持增量数据更新的问题,它需要对应的表只增不减,而这个几乎在项目中是不可能办到的。 
http://www.jianshu.com/p/05cff717563c 
2)、 
博主leotse90在博文中提到elasticsearch-jdbc的缺点:那就是删除操作不能同步(物理删除)! 
http://leotse90.com/2015/11/11/ElasticSearch与MySQL数据同步以及修改表结构/

我截止2016年6月16日没有测试到,不妄加评论。

这里写图片描述

3、elasticsearch-jdbc如何使用?要不要安装?

3.1 和早期版本不同点

elasticsearch-jdbcV2.3.2.0版本不需要安装。以下笔者使用的elasticsearch也是2.3.2测试。 
操作系统:CentOS release 6.6 (Final) 
看到这里,你可能会问早期的版本有什么不同呢?很大不同。从我搜集资料来看,不同点如下: 
1)早期1.x版本,作为插件,需要安装。 
2)配置也会有不同。

3.2 elasticsearch-jdbc使用(同步方法一)

前提: 
1)elasticsearch 2.3.2 安装成功,测试ok。 
2)mysql安装成功,能实现增、删、改、查。 
可供测试的数据库为test,表为cc,具体信息如下:

<code class="hljs asciidoc has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;"><span class="hljs-header" style="box-sizing: border-box;">mysql> select * from cc;+----+------------+</span><span class="hljs-header" style="box-sizing: border-box;">| id | name |+----+------------+</span>| 1 | laoyang || 2 | dluzhang |<span class="hljs-header" style="box-sizing: border-box;">| 3 | dlulaoyang |+----+------------+</span>3 rows in set (0.00 sec)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>

第一步:下载工具。 
址:http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.2.0/elasticsearch-jdbc-2.3.2.0-dist.zip 
第二步:导入Centos。路径自己定,笔者放到根目录下,解压。unzip elasticsearch-jdbc-2.3.2.0-dist.zip 
第三步:设置环境变量。

[root@5b9dbaaa148a /]# vi /etc/profile 
export JDBC_IMPORTER_HOME=/elasticsearch-jdbc-2.3.2.0

使环境变量生效: 
[root@5b9dbaaa148a /]# source /etc/profile 
第四步:配置使用。详细参考:https://github.com/jprante/elasticsearch-jdbc 
1)、根目录下新建文件夹odbc_es 如下: 

[root@5b9dbaaa148a /]# ll /odbc_es/ 
drwxr-xr-x 2 root root 4096 Jun 16 03:11 logs 
-rwxrwxrwx 1 root root 542 Jun 16 04:03 mysql_import_es.sh 

2)、新建脚本mysql_import_es.sh,内容如下;

<code class="hljs cmake has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">[root@<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>b9dbaaa148a odbc_es]<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># cat mysql_import_es.sh</span>’<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#!/bin/sh</span>bin=$JDBC_IMPORTER_HOME/binlib=$JDBC_IMPORTER_HOME/libecho '{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"type"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"jdbc"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"jdbc"</span>: {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"elasticsearch.autodiscover"</span>:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"elasticsearch.cluster"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"my-application"</span>, <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#簇名,详见:/usr/local/elasticsearch/config/elasticsearch.yml</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"url"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"jdbc:mysql://10.8.5.101:3306/test"</span>, <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#mysql数据库地址</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"user"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"root"</span>, <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#mysql用户名</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"password"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"123456"</span>, <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#mysql密码</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"sql"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"select * from cc"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"elasticsearch"</span> : {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"host"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"10.8.5.101"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"port"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9300</span>},<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"index"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"myindex"</span>, <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#新的index</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"type"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"mytype"</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#新的type</span>}}'| java \  -cp <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"${lib}/*"</span> \  -Dlog4j.configurationFile=<span class="hljs-envvar" style="color: rgb(102, 102, 0); box-sizing: border-box;">${bin}</span>/log4j2.xml \  org.xbib.tools.Runner \  org.xbib.tools.JDBCImporter</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li></ul>

3)、为 mysql_import_es.sh 添加可执行权限。 
[root@5b9dbaaa148a odbc_es]# chmod a+x mysql_import_es.sh 
4)执行脚本mysql_import_es.sh 
[root@5b9dbaaa148a odbc_es]# ./mysql_import_es.sh

第五步:测试数据同步是否成功。 
使用elasticsearch检索查询:

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">[root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@5b9dbaaa148a</span> odbc_es]<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># curl -XGET 'http://10.8.5.101:9200/myindex/mytype/_search?pretty'</span>{  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"took"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"timed_out"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_shards"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"total"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"successful"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"failed"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>  },  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hits"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"total"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"max_score"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hits"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> [ {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_index"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"myindex"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_type"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"mytype"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"AVVXKgeEun6ksbtikOWH"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_score"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_source"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"id"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"laoyang"</span>  }  }, {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_index"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"myindex"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_type"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"mytype"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"AVVXKgeEun6ksbtikOWI"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_score"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_source"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"id"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"dluzhang"</span>  }  }, {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_index"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"myindex"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_type"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"mytype"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"AVVXKgeEun6ksbtikOWJ"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_score"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_source"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"id"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"dlulaoyang"</span>  }  } ]  }}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li></ul>

出现以上包含mysql数据字段的信息则为同步成功。

4、 elasticsearch-jdbc 同步方法二

<code class="hljs bash has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">[root@<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>b9dbaaa148a odbc_es]<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># cat mysql_import_es_simple.sh</span><span class="hljs-shebang" style="color: rgb(0, 102, 102); box-sizing: border-box;">#!/bin/sh</span>bin=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$JDBC_IMPORTER_HOME</span>/binlib=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$JDBC_IMPORTER_HOME</span>/lib  java \  -cp <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${lib}</span>/*"</span> \  -Dlog4j.configurationFile=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${bin}</span>/log4j2.xml \  org.xbib.tools.Runner \  org.xbib.tools.JDBCImporter statefile.json[root@<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>b9dbaaa148a odbc_es]<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># cat statefile.json</span>{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"type"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"jdbc"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"jdbc"</span>: {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"elasticsearch.autodiscover"</span>:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">true</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"elasticsearch.cluster"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"my-application"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"url"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"jdbc:mysql://10.8.5.101:3306/test"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"user"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"root"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"password"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"123456"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"sql"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"select * from cc"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"elasticsearch"</span> : {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"host"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"10.8.5.101"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"port"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9300</span>},<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"index"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"myindex_2"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"type"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"mytype_2"</span>}}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li></ul>

脚本和json文件分开,脚本执行前先加载json文件。 
执行方式:直接运行脚本 ./mysql_import_es_simple.sh 即可。

5、Mysql与elasticsearch等价查询

目标:实现从表cc中查询id=3的name信息。 
1)MySQL中sql语句查询:

<code class="hljs asciidoc has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;"><span class="hljs-header" style="box-sizing: border-box;">mysql> select * from cc where id=3;+----+------------+</span><span class="hljs-header" style="box-sizing: border-box;">| id | name |+----+------------+</span><span class="hljs-header" style="box-sizing: border-box;">| 3 | dlulaoyang |+----+------------+</span>1 row in set (0.00 sec)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>

2)elasticsearch检索:

<code class="hljs cpp has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">[root@<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>b9dbaaa148a odbc_es]<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># curl http:<span class="hljs-comment" style="box-sizing: border-box;">//10.8.5.101:9200/myindex/mytype/_search?pretty -d '</span></span>{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"filter"</span> : { <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"term"</span> : { <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"id"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"3"</span> } }}'{  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"took"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"timed_out"</span> : <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_shards"</span> : {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"total"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"successful"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"failed"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>  },  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hits"</span> : {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"total"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"max_score"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hits"</span> : [ {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_index"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"myindex"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_type"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"mytype"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"AVVXKgeEun6ksbtikOWJ"</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_score"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_source"</span> : {  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"id"</span> : <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"dlulaoyang"</span>  }  } ]  }}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li></ul>

常见错误:

错误日志位置:/odbc_es/logs 
日志内容: 
[root@5b9dbaaa148a logs]# tail -f jdbc.log 
[04:03:39,570][INFO ][org.xbib.elasticsearch.helper.client.BaseTransportClient][pool-3-thread-1] after auto-discovery connected to [{5b9dbaaa148a}{aksn2ErNRlWjUECnp_8JmA}{10.8.5.101}{10.8.5.101:9300}{master=true}]

Bug1、[02:46:23,894][ERROR][importer.jdbc ][pool-3-thread-1] error while processing request: cluster state is RED and not YELLOW, from here on, everything will fail! 
原因: 
you created an index with replicas but you had only one node in the cluster. One way to solve this problem is by allocating them on a second node. Another way is by turning replicas off. 
你创建了带副本 replicas 的索引,但是在你的簇中只有一个节点。

解决方案: 
方案一:允许分配‘它们’到第二个节点。 
方案二:关闭副本replicas(非常可行)。如下:

<code class="hljs lasso has-numbering" style="display: block; padding: 0px; background: transparent; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal;">curl <span class="hljs-attribute" style="box-sizing: border-box;">-XPUT</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'localhost:9200/_settings'</span> <span class="hljs-attribute" style="box-sizing: border-box;">-d</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'{  "index" : {  "number_of_replicas" : 0  }}</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>

Bug2、[13:00:37,137][ERROR][importer.jdbc ][pool-3-thread-1] error while processing request: no cluster nodes available, check settings {autodiscover=false, client.transport.ignore_cluster_name=false, client.transport.nodes_sampler_interval=5s, client.transport.ping_timeout=5s, cluster.name=elasticsearch, 
org.elasticsearch.client.transport.NoNodeAvailableException: no cluster nodes available, check 
解决方案: 
见上脚本中新增: 
“elasticsearch.cluster”:”my-application”, #簇名,和/usr/local/elasticsearch/config/elasticsearch.yml 簇名保持一致。

参考: 
http://stackoverflow.com/questions/11944915/getting-an-elasticsearch-cluster-to-green-cluster-setup-on-os-x

2016-6-16 思于家中床前

作者:铭毅天下 
转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/51694519 
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

0 0
原创粉丝点击