文档章节

elasticsearch之jdbc同步

王念博客
 王念博客
发布于 2016/04/14 13:43
字数 1526
阅读 4021
收藏 7
点赞 1
评论 1

     由于es官网叫停river类的导入插件,因此原始的elasticsearch-jdbc-river变更为elasticsearch-jdbc,成为一个独立的导入工具。官方提到的同类型工具还有logstash,个人觉得logstash在做数据库同步的时候并不是很好用,有太多坑要填。

插件的github地址 https://github.com/jprante/elasticsearch-jdbc/

必须按照es的相应的版本安选择jdbc的版本

http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/<version>/elasticsearch-jdbc-<version>-dist.zip

下载时将<version>替换成相应的版本即可。

  1. 解压下载的压缩包

  2. 修改 bin下面的相应的命令文件,比如 windows有一个mysql-simple-example.bat

  3. 启动即可

jdbc本身有个坑是如果mysql中某个字段的值本身就是一个json格式的话就会报错,例如:

org.elasticsearch.index.mapper.MapperParsingException: failed to parse [page]

因此需要使用mysql的拼接函数来解决。

   CONCAT('(',HomePage,')') as `page`

报错信息:

java.net.MalformedURLException: unknown protocol: c


目前使用mysql导入数据到elasticsearch的方法常用方法如下:
elasticsearch-jdbc(早期的elasticsearch-river-jdbc)

https://github.com/jprante/elasticsearch-jdbc (推荐)


elasticsearch-river-mysql 

 https://github.com/scharron/elasticsearch-river-mysql

go-mysql-elasticsearch

https://github.com/siddontang/go-mysql-elasticsearch

logstash导入插件 

https://github.com/elastic/logstash


常用配置说明:

  "schedule" : "0 0/60 0-23 ? * *", 

  type: "jdbc", 

  jdbc: {

    url: "jdbc:mysql://127.0.0.1:3306/test", 

    user: "root", 

    password: "root", 

    sql : [

            {

                "statement" : "select id as _id  ... from ... where a = ?, b = ?, c = ?",

                "parameter" : [ "value for a", "value for b", "value for c" ]

            }

    ],

    locale: "zh_CN", 

    index: "创建的索引名", 

    type: "创建的type名", 

    index_settings: {

      index: {

        number_of_shards: "3"

      }

    }, 

    type_mapping: {

      "type名": {

        dynamic: true, 

        properties: {

          "field名": {

            type: "string", 

            analyzer: "ik", 

            indexAnalyzer: "ik", 

            searchAnalyzer: "ik"

          }, 

          "field名": {

            type: "string", 

            analyzer: "ik", 

            indexAnalyzer: "ik",

            searchAnalyzer: "ik"

          }, 

          "field名": {

            type: "string", 

            analyzer: "ik", 

            indexAnalyzer: "ik",

            searchAnalyzer: "ik"

          }, 

          "field名": {

            type: "string", 

            analyzer: "ik", 

            indexAnalyzer: "ik",

            searchAnalyzer: "ik"

          },   

          "LOCATIONS": {

            type: "geo_point"

          }

        }

      }

    }

  }

}



常用介绍:

获取一个表,select * from table可以使用查询。 查询从数据库选择数据的简单的变体。 他们转储表成Elasticsearch逐行。 如果没有_id列名,IDs将自动生成。

id as _id 这样的话可以增量同步,_id是es的默认id命名

"interval":"1800", 这里是同步数据的频率 1800s,半小时,可以按需要设成 1s或其它

"schedule" : "0 0/60 0-23 ? * *",   同步数据任务  60分钟一次

"flush_interval" : "5s",    刷新间隔为5S

sql.parameter——绑定SQL语句参数(按顺序)。 可以使用一些特殊的值具有以下含义:

    $now——当前时间戳

    $state——国家之一:BEFORE_FETCH,取回,AFTER_FETCH,无所事事,例外

    $metrics.counter——一个计数器

    $lastrowcount——从最后一条语句的行数

    $lastexceptiondate- SQL时间戳的例外

    $lastexception——完整的堆栈跟踪的例外

    $metrics.lastexecutionstart——最后一次执行SQL时间戳的时候开始

    $metrics.lastexecutionend- SQL时间戳的时候最后一次执行结束

    $metrics.totalrows——总获取的行数

    $metrics.totalbytes——获取的字节总数

    $metrics.failed——失败的SQL执行的总数

    $metrics.succeeded


删除river:


curl -XDELETE  localhost:9200/_river/_meta

http:// localhost:9200/_river/_meta   delete请求


参数名的介绍:


locale默认语言环境(用于解析数值,浮点的性格。 推荐的值是“en_US”)

timezone——JDBC的时区setTimestamp()调用绑定参数时的时间戳值

rounding——舍入模式解析数值。 可能的值“天花板”,“下”,“地板”,“halfdown”、“halfeven”,“halfup”、“不必要的”,“上”

scale——解析数值的精度

autocommit- - - - - -true如果每个语句应该被自动执行。 默认是false

fetchsize——fetchsize大型结果集,大多数司机使用这个控制行缓冲的数量而遍历结果集

max_rows——声明限制获取的行数,其余的行被忽略

max_retries——重试的次数(重新)连接到一个数据库

max_retries_wait——时间价值的时间应重试之间等。 

resultset_type- JDBC结果集类型,可以TYPE_FORWARD_ONLY TYPE_SCROLL_SENSITIVE TYPE_SCROLL_INSENSITIVE。 默认是TYPE_FORWARD_ONLY

resultset_concurrency- JDBC结果集并发性,可以CONCUR_READ_ONLY CONCUR_UPDATABLE。 默认是CONCUR_UPDATABLE

ignore_null_values——如果NULL值构建JSON文档时应该被忽略。 默认是false

detect_geo——如果geo多边形/分在SQL列构造时应解析JSON文档。 默认是true

detect_json——如果json结构构建json文档时应该解析SQL列。 默认是true

prepare_database_metadata——如果司机元数据作为参数要准备好。 默认是false

prepare_resultset_metadata——如果结果集元数据应该准备作为参数。 默认是false

column_name_map——地图的别名应该用作替代数据库的列名称。 对于Oracle 30 char列名称限制。 默认是null

query_timeout——第二个价值多长时间允许SQL语句被执行之前被认为是输了。 默认是1800

connection_properties——地图的连接属性用于创建驱动程序连接。 默认是null

schedule——一个单一的或cron表达式列表计划执行。 语法是相当于 石英cron表达式格式语法(见下文)

threadpoolsize——计划执行的线程池的大小schedule参数。 如果设置为1,所有工作将连续执行。 默认是4。

interval——两个运行之间的延迟时间值(默认值:不设置)

elasticsearch.cluster——Elasticsearch集群名称

elasticsearch.host——一系列Elasticsearch主机(主机名或规范host:port)

elasticsearch.port——Elasticsearch主机

elasticsearch.autodiscover——如果true、JDBC进口国将尝试连接到所有集群节点。 默认是false

max_bulk_actions每个批量索引请求提交的长度(默认值:10000)

max_concurrrent_bulk_requests并发大量请求的最大数量(默认值:2 * CPU核的数量)

max_bulk_volume——一个字节大小参数允许的最大体积的大部分请求(默认值:10米)

max_request_wait——时间价值的最大等待时间响应大部分请求

flush_interval——时间价值区间段冲洗索引文档批量操作(默认值:“5 s”)

index——Elasticsearch指数用于索引

type——Elasticsearch用于索引的索引类型

index_settings-可选设置Elasticsearch指数

type_mapping-可选为Elasticsearch指数类型映射

statefile——文件的名称JDBC进口国读写状态信息

metrics.lastexecutionstart——开始的UTC日期/时间的最后一次执行一个获取

metrics.lastexecutionend——最后的UTC日期/时间的最后一次执行一个获取

metrics.counter——一个计数器度量,将每一个获取后增加

metrics.enabled——如果true启用日志记录,指标。 默认是false

metrics.interval——度量日志之间的时间间隔。 默认是30秒。

metrics.logger.plain——如果true纯文本格式的日志消息,写指标。 默认是false

metrics.logger.json——如果true、写度量JSON格式的日志消息。 默认是false


博客地址:http://my.oschina.net/wangnian

© 著作权归作者所有

共有 人打赏支持
王念博客
粉丝 128
博文 95
码字总数 52634
作品 0
虹口
程序员
加载中

评论(1)

Level1一方通行
Level1一方通行
这个插件装了就能自动同步吗,求问
Centos6搭建elk系统,监控IIS日志

**所需程序: 服务器端:java、elasticsearch、kikbana 客 户 端:IIS、logstash** 一、服务器端(192.168.10.46)操作: 先建立一个ELK专门的目录: [root@Cent65 ~]mkdir /elk/ 上传到elk...

D杀手D ⋅ 04/24 ⋅ 0

ELK 实验(二)安装Elastic Search 单节点

Linux 安装 java -version echo $JAVA_HOME 木有返回,环境没有设置好。。。 vi /etc/profile export JAVAHOME=/usr/java/jdk1.8.0162 export JREHOME=$JAVAHOME/jre export CLASSPATH=$JAV......

pcdog ⋅ 04/15 ⋅ 0

ELK实时日志分析平台部署搭建详细实现过程

原文地址:http://www.linuxidc.com/Linux/2016-09/135137.htm 1、ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 日志主要包括系统日志、应用程序日志和安全日志。...

tanga842428 ⋅ 2017/07/27 ⋅ 0

Elasticsearch的配置(1)

配置Elasticsearch Elasticsearch提供良好的默认设置,只需要很少的配置。使用群集更新设置 API,可以在运行的群集上更改大多数设置 。 https://www.elastic.co/guide/en/elasticsearch/refe...

yzy121403725 ⋅ 06/13 ⋅ 0

Spark中hive的使用(hive操作es示例)

配置hive-site.xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect ......

守望者之父 ⋅ 06/15 ⋅ 0

Elasticsearch入门实践

一. 系统环境 操作系统:CentOS release 6.8 (Final) ES版本:6.1.1 二. 安装 先确认安装了Java运行时环境: 解压ES压缩包: 三. 启动 1. 启动ES单节点 当然,对于在后台以守护进程模式运行的...

哲别0 ⋅ 06/06 ⋅ 0

Linux 环境下安装 elasticsearch 5.x、6.x 问题汇总

can not run elasticsearch as root [o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: java.lang.Ru......

BeckJin ⋅ 05/19 ⋅ 0

Elastic Search学习笔记1——安装elasticsearch2.4.6

Elastic Search 简介 1.基于Apache Lucene的开源搜索引擎 2.采用Java编写 RESTful API风格 3.较容易的横向扩展 应用场景 1.海量数据分析引擎 2.数据搜索引擎 3.数据仓库 官网 https://www.el...

晨猫 ⋅ 03/09 ⋅ 0

Spring Data Elasticsearch 和 x-pack 用户名/密码验证连接

使用Spring Data Elasticsearch连接elasticsearch时,正常情况下只需要在application.properites文件中添加如下配置即可连接: 以看到Spring Data Elasticsearch连接elasticsearch很简单。 ...

kipeng300 ⋅ 04/24 ⋅ 0

bboss elasticsearch v5.0.7.0 发布

The best elasticsearch highlevel java rest api-----bboss bboss elasticsearch v5.0.7.0发布 v5.0.7.0新增功能特性和改进 1.增加批量索引添加/修改方法,可以为list参数指定文档id 和文档...

bboss ⋅ 06/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会

摘要: 一、数据中台之道 6月8日,上海云栖大会进入了第二天的议程,数据中台专场论坛座无虚席,数据中台总架构师邓中华女士向在场的观众介绍了数据中台的衍生发展之道。 基于OneID、OneData...

阿里云云栖社区 ⋅ 26分钟前 ⋅ 0

Ubuntu部署django问题汇总

使用Anaconda3的Python3.6的pip安装UWSGI报错 原因是gcc版本不兼容,安装4.7并修改gccsudo apt-get install gcc-4.7sudo mv /usr/bin/gcc /usr/bin/gcc.baksudo ln -s /usr/bin/gcc-4.......

wuyaSama ⋅ 29分钟前 ⋅ 0

从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会

摘要: 一、数据中台之道 6月8日,上海云栖大会进入了第二天的议程,数据中台专场论坛座无虚席,数据中台总架构师邓中华女士向在场的观众介绍了数据中台的衍生发展之道。 基于OneID、OneData...

猫耳m ⋅ 30分钟前 ⋅ 0

Docker减肥小记

如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察 如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无用的镜像、容器、网络和数据卷… 1、查看...

寰宇01 ⋅ 40分钟前 ⋅ 0

微信小程序中如何使用WebSocket实现长连接(含完整源码)

本文由腾讯云技术团队原创,感谢作者的分享。 1、前言 微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架、组件以及 API,在这个平台上面的想象空间很大。腾讯云研究了一...

JackJiang- ⋅ 48分钟前 ⋅ 0

定制库到Maven本地资源库

1.如果只有定制库的JAR文件 下载链接如下:pdf.jar 2.使用命令转换成Maven本地资源 mvn install:install-file -Dfile=/Users/manager/Downloads/clj-pdf-2.2.33.jar -DgroupId=clj-pdf -Dar......

年少爱追梦 ⋅ 52分钟前 ⋅ 0

高仿springmvc之xuchen-mvc

package org.mvc.framework.servlet; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.......

徐志 ⋅ 54分钟前 ⋅ 0

关于自定义URLStreamHandler的一次踩坑

关于自定义URLStreamHandler的一次踩坑 20180625 lambo init 说明 一般自定义实现url的协议解析.方案为实现URLStreamHandler.实现其 openConnection 就可以了, 如果我们执行 new URL("xx://...

林小宝 ⋅ 55分钟前 ⋅ 0

【SM2证书】利用BC的X509v3CertificateBuilder组装X509国密证书

演示证书文件 链接: https://pan.baidu.com/s/1ijHNnMQJj7jzW-jXEVd6Gg 密码: vfva 所需jar包 <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk15on --> <dependenc......

小帅帅丶 ⋅ 56分钟前 ⋅ 0

用Calendar 实现 计算 一段时间的毫秒值

Calendar c=Calendar.getInstance();c.add(Calendar.MONTH, -1);int lastMonthMaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH)......

岸芷汀兰 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部