• 第七篇 elasticsearch 链接mysql不会更新


    这是我键的索引

    "settings":{
            "number_of_shards":3,
            "number_of_replicas":2
        },
        "mappings":{
            "foods":{
                "properties":{
                    "goodsname":{
                        "type":"keyword"
                    },
                    "goodsprice":{
                        "type":"double"
                    },
                    "goodsnum":{
                        "type":"integer"
                    },
                    "goodspath":{
                        "type":"text"
                    },
                    "shopname":{
                        "type":"completion",
                        "analyzer":"simple",
                        "search_analyzer":"simple",
                        "preserve_separators":true
                    },
                    "updtime":{
                        "type":"date"
                    },
                    "goodsrole":{
                        "type":"integer"
                    },
                    "createtime":{
                        "type":"date"
                    },
                    "uid":{
                        "type":"integer"
                    },
                    "goodstype":{
                        "type":"text"
                    },
                    "shopid":{
                        "type":"integer"
                    }
                }
            }
        }
    }

    2.插入的工具用的是postman

    1、版本介绍


    Elasticsearch:
    https://www.elastic.co/products/elasticsearch
    版本:6.1

    Logstash:
    https://www.elastic.co/products/logstash
    版本:2.4.0
    所需要的安装文件,到官网下载即可。

    还需要对应的数据库JDBC,这里使用的是mysql-connector-java-5.1.39.jar
    去mysql官网下载
    Elasticsearch配置请参照之前的博客,不在这里介绍了。

    、Logstash安装配置

    Logstash直接下载后解压即可,主要是配置文件的内容编写。

    安装logstash-input-jdbc的Logstash插件,用来进行mysql、oracle等的数据同步。

    linux

    [zsz@VS-zsz logstash-2.4.0]$ bin/plugin install logstash-input-jdbc
    The use of bin/plugin is deprecated and will be removed in a feature release. Please use bin/logstash-plugin.
    Validating logstash-input-jdbc
    Installing logstash-input-jdbc
    Installation successful

    window下载后解压就可以

    配置文件(自行指定文件名,这里命名为logstash-mysql.conf ):

    linux打开[zsz@VS-zsz conf]$ vi logstash-mysql.conf 

    window新建logstash-mysql.conf文件在bin文件夹下

    复制下面的

    input {
      jdbc {
        jdbc_driver_library => "/usr/local/logstash-2.4.0/mysql-connector-java-5.1.39.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_connection_string => "jdbc:mysql://192.168.****:3306/******?characterEncoding=UTF-8&useSSL=false"
        jdbc_user => "*****"
        jdbc_password => "*********"
        statement => "SELECT * FROM news limit 0,1"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
        schedule => "* * * * *"
      }
    }
    
    filter {
       json {
            source => "message"
            remove_field => ["message"]
        }
    }
    
    output {
      stdout {
        codec => rubydebug
      }
      elasticsearch {
        hosts => "192.168.****"
        index => "myindex"
      }        
    } 
     

    启动Logstash在bin问价夹下执行logstash -f /usr/local/logstash-2.4.0/conf/logstash-mysql.conf
    下面是linux的

    [zsz@VS-zsz conf]$ /usr/local/logstash-2.4.0/bin/logstash -f /usr/local/logstash-2.4.0/conf/logstash-mysql.conf 

    window在bin文件夹线执行logstash -f /usr/local/logstash-2.4.0/conf/logstash-mysql.conf 

    这个进程会一直执行下去,因为设置的schedule => "* * * * *"(每分钟执行一次),如果想结束进程需要kill掉进程。


    查看elasticsearch是否同步数据成功
    [root@VS-zsz conf]# curl '192.168.31.79:9200/_cat/indices?v'
    health status index pri rep docs.count docs.deleted store.size pri.store.size
    green open test 5 1 0 0 1.5kb 795b
    green open myindex 5 1 494 0 924.7kb 457.6kb
    [root@VS-zsz conf]# curl '192.168.31.78:9200/_cat/indices?v'
    health status index pri rep docs.count docs.deleted store.size pri.store.size
    green open test 5 1 0 0 1.5kb 795b
    green open myindex 5 1 494 0 925kb 457.8kb
    [root@VS-zsz conf]# curl '192.168.31.79:9200/_cat/indices?v'
    health status index pri rep docs.count docs.deleted store.size pri.store.size
    green open test 5 1 0 0 1.5kb 795b
    green open myindex 5 1 494 0 925kb 457.8kb

    说明数据成功导入,而且在设置了定时任务的情况下, myindex索引的容量不断增加。

    5、常见错误:
    (1)Pipeline aborted due to error {:exception=>"LogStash::ConfigurationError", :backtrace=>..................stopping pipeline {:id=>"main"}
    原因:logstash-mysql.conf 文件配置错误,对于>=2.*的版本, elasticsearch 的参数名应为hosts,如果设置为host则会报错。此处应该是可以配置多个数据源。

    6.介绍配置文件(自行指定文件名,这里命名为logstash-mysql.conf ):
     input {
        stdin {
        
        }
        jdbc {
            # 数据库地址  端口  数据库名
            jdbc_connection_string => "jdbc:mysql://localhost:3306/shen"
            # 数据库用户名      
            jdbc_user => "root"
            # 数据库密码
            jdbc_password => "rootroot"
            # mysql java驱动地址 
            jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-5.1.43-bin.jar"
            # 驱动类的名称
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            
            jdbc_paging_enabled => "true"
            
            jdbc_page_size => "50000"
            statement => "SELECT * FROM TABLE"
            # sql 语句文件,对于复杂的查询,可以放在文件中。
            # statement_filepath => "filename.sql"
            # 设置监听间隔,语法与Linux系统Cron相同
            schedule => "* * * * *"
        }
    }
    output {
         stdout {
            codec => json_lines
        }
       elasticsearch {
            hosts  => "localhost:9200"
            index => "contacts"
         document_type => "contact"
            document_id => "%{id}"
        }
    }
  • 相关阅读:
    Coursera课程笔记----计算导论与C语言基础----Week 7
    Coursera课程笔记----计算导论与C语言基础----Week 6
    Coursera课程笔记----计算导论与C语言基础----Week 5
    Coursera课程笔记----P4E.Capstone----Week 6&7
    Coursera课程笔记----P4E.Capstone----Week 4&5
    Coursera课程笔记----P4E.Capstone----Week 2&3
    图解 Java 垃圾回收机制,写得非常好!
    别在 Java 代码里乱打日志了,这才是正确的打日志姿势!
    聊一聊Java 泛型中的通配符 T,E,K,V,?
    Java开发最常犯的10个错误,打死都不要犯!
  • 原文地址:https://www.cnblogs.com/yu-hailong/p/8087385.html
Copyright © 2020-2023  润新知