logstash同步ES数据

如何使用logstash同步es数据

1.下载

https://download.elastic.co/logstash/logstash/logstash-2.4.1.zip

2.安装

2.1 解压安装到目录

image.png

2.2 安装插件 logstash-input-mysql


cd logstash-2.4.1

bin/logstash-plugin install logstash-input-jdbc

如果插件更新失败, 是因为RubyGems 一直以来在国内都非常难访问到


请尽可能用比较新的 RubyGems 版本,建议 2.6.x 以上。

# 这里请翻墙一下

$ gem update --system

$ gem -v

2.6.3

$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/

$ gem sources -l

https://gems.ruby-china.org

# 确保只有 gems.ruby-china.org

# 如果遇到 SSL 证书问题,你又无法解决,请直接用 http://gems.ruby-china.org 避免 SSL 的问题

(gem sources --add http://gems.ruby-china.org/ --remove https://gems.ruby-china.org/)

#修改源

cd logstash-2.4.1

vim Gemfile

vim Gemfile.jruby-1.9.lock

3 使用

参考

plugins-input-jdbc

plugins-output-elasticsearch

3.1 logstash.conf 配置


# 这里的路径相对 你执行命令所在路径

input {

   jdbc {

     #驱动

    jdbc_driver_library => "/opt/lib/mysql-connector-java-5.1.40.jar"

    #驱动类

    jdbc_driver_class => "com.mysql.jdbc.Driver"

    #数据库

    jdbc_connection_string => "jdbc:mysql://localhost:3306/database_name"

     #数据库用户名

    jdbc_user => "root"

    #数据库密码

    jdbc_password => "password"

    #任务调度 (分、时、天、月、年,全部为*默认含义为每分钟都更新)

    schedule => "* * * * *"

    #脚本路径

    statement_filepath => "../scripts/patent.sql"

    #分页

    jdbc_paging_enabled => "true"

    #分页大小(默认100,000)

    jdbc_page_size => "100000"

    #---- 增量更新 ----

    #是否记录上次执行结果(执行最后一条记录的结果,为了增量更新,数据量大时,不需要重新查询)

    #默认true

    record_last_run=>"true"

    #是否记录某个column的值,如果false存储同步最后一条记录的时间戳

    use_column_value => "true"

    #如果 use_column_value 为真,需配置此参数,表示记录哪一列(注意是elasticsearch中document里的列,不是sql的列)

    tracking_column => "updateDate"

    #指定文件(记录上次执行到的 tracking_column 字段的值)

    last_run_metadata_path => "../lastrun/logstash_jdbc_last_run_patent_payable_fee"

    #是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录

    #避免踩坑,在同步缴费信息过程中,将clean_run设置为true,

    #导致第一次同步50w条数据后,关闭logstash,再次开启同步,发现logstash居然从头查询,没有使用tracking_column的value

    #默认false

    clean_run => "false"

    #时区设置

    #建议不要使用该配置,可能会导致数据同步时遗漏数据

    #修改了之后发现last_run中记录的时间变成本地时间,当时es里还是存储的utc标准时间(比本地时间早8个小时)

    jdbc_default_timezone => "Asia/Shanghai"

  }

}

output {

    elasticsearch {

        #全文检索服务器

        hosts => "localhost:9200"

        #索引(数据库)

        index => "zl_dev"

        #类型(数据库表)

        document_type => "%{type}"

        #主键(防止重复)

        document_id => "%{id}"

    }

}

3.2 sql 脚本

这里sql_last_value 我们记录的是修改时间,这样容易完成增量更新


SELECT * FROM t_dp_patent WHERE update_date > :sql_last_value

3.3 执行脚本


cd /opt/logstash-2.4.1/bin

./logstash -f  ../scripts/patent.conf &

4.疑难杂症

映射文件

{

"settings": {

    "analysis": {

        "analyzer": {

              "my_analyzer": {

                  "type":        "pattern",

                  "pattern":    ",",

                  "tokenizer":    "whitespace",

                 "char_filter":  [ "html_strip"]

          }

      }

  }

},

"mappings": {

      "patent": {

          "properties": {

                 "patentHolder": {

                       "type": "string",

                        "analyzer": "ik"

                  },

                "patentHolder_": {

                   "type": "string",

                    "index":"not_analyzed"

                },

              "patentHolder_1": {

                    "type": "string",

                    "analyzer":"my_analyzer"

                  },

              "applicant_": {

                    "type": "string",

                    "index":"not_analyzed"

                  },

              "name": {

                    "type": "string",

                    "analyzer": "ik"

                  },

              "name_": {

                    "type": "string",

                    "index":"not_analyzed"

                  },

              "applicationNumber": {

                    "type": "string",

                    "analyzer": "ik"

                  },

              "applicationNumber_": {

                    "type": "string",

                    "index":"not_analyzed"

                  },

              "applicant": {

                    "type": "string",

                    "analyzer": "ik"

                  },

              "applicant_": {

                    "type": "string",

                    "index":"not_analyzed"

                  },

              "applicant_1": {

                    "type": "string",

                    "analyzer":"my_analyzer"

                  },

              "agent": {

                    "type": "string",

                    "analyzer": "ik"

                  },

              "agency": {

                    "type": "string",

                    "analyzer": "ik"

                  },

              "agency_": {

                    "type": "string",

                    "index":"not_analyzed"

                  },

              "applicantAddr": {

                    "type": "string",

                    "analyzer": "ik"

                  },

              "inventor": {

                    "type": "string",

                    "analyzer": "ik"

                  },

              "synoptic": {

                    "type": "string",

                    "analyzer": "ik"

                  },

              "createDate": {

                    "format": "strict_date_optional_time||epoch_millis",

                    "type": "date"

                  },

              "updateDate": {

                    "format": "strict_date_optional_time||epoch_millis",

                    "type": "date"

                  },

              "ipc": {

                    "type": "string"

                  },

              "loc": {

                    "type": "string"

                  },

              "synopticPicId": {

                    "type": "string"

                  },

              "censor": {

                    "type": "string"

                  },

              "applicantArea": {

                    "type": "string"

                  },

              "applicationDate": {

                    "format": "strict_date_optional_time||epoch_millis",

                    "type": "date"

                  },

              "notificationDate": {

                    "format": "strict_date_optional_time||epoch_millis",

                    "type": "date"

                  },

              "notificationNumber": {

                    "type": "string"

                  },

              "id": {

                    "type": "long"

                  },

              "keysHash": {

                    "type": "string"

              },

              "patentNo": {

                    "type": "string"

              },

              "type_": {

                    "type": "string"

              },

              "status": {

                    "type": "long"

              },

              "delFlag": {

                    "type": "long"

              }

          }

      }

    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 1、ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:以下内容来自:http://bai...
    螺旋上升的世界阅读 2,948评论 0 20
  • 本人陆陆续续接触了ELK的1.4,2.0,2.4,5.0,5.2版本,可以说前面使用当中一直没有太多感触,最近使用...
    三杯水Plus阅读 4,067评论 0 12
  • 概述 监控预警平台, eagle + eye (鹰眼)的合体词, 寓意可以快速发现问题, 并及时作出响应,Eagl...
    Kungfu猫熊阅读 7,241评论 0 52
  • 做事学艺大凡有个渐进次第,经过不同的阶段,最后臻于化境而炉火纯青。学习摄影,也有一个境界转换提升问题。以个人的体悟...
    宏腾文化馆阅读 874评论 2 13
  • 1、感恩闹钟。把我叫醒,让我开始美好的一天。谢谢!谢谢!谢谢! 2、感恩墨竹。有机会和朋友分享绘画的心路历程。谢谢...
    木子青青草阅读 170评论 0 0