博客
关于我
Elasticsearch之logstash的下载安装及使用并配置ik分词器
阅读量:798 次
发布时间:2019-03-25

本文共 2485 字,大约阅读时间需要 8 分钟。

1. 选择同步边界

在设置数据库到Elasticsearch(ES)的数据同步任务时,选择合适的同步边界至关重要。以下是两种常见的同步边界选择及其优缺点:

####字段id

当数据库中新增字段时,使用字段id作为同步边界可以确保新字段被同步到ES。这是因为每当数据库有新增字段时,Logstash会自动将其推送到ES。但其缺点在于,当数据库中的数据进行更新时,Logstash无法自动感知这些更新,可能导致数据不完整或延迟。

####updateTime

相比之下,选择updateTime作为同步边界是一个更好的选择。updateTime字段在数据库中无论是新增还是修改都会产生变化。Logstash能够识别这些变化,从而在定期同步过程中自动拉取数据库中更新的数据。这种方式能够有效避免数据延迟问题,确保数据的一致性。


2. Logstash JDBC 插件(新版本自带的)

Logstash 推出了一个内置的JDBC插件,可以用来直接从数据库中读取数据并将其导入Elasticsearch。以下是该插件的使用步骤和配置示例:

####准备步骤

  • 下载Logstash:根据你的Elasticsearch版本选择合适的Logstash版本。建议访问Elastic官方网站:https://www.elastic.co/cn/downloads/elasticsearch
  • 下载数据库驱动:下载适用于你数据库类型的JDBC驱动。例如,MySQL驱动可以使用 mysql-connector-java-5.1.41.jar
  • 解压和配置
    • 使用 tar 命令解压 Logstash:tar -zxzf logstash-x.x.x-linux-x86_64.tar.gz
    • 进入解压后的 Logstash 目录,创建配置文件目录:mkdir -p logstash-x.x.x/sync
    • 使用 Vim 创建同步规则配置文件:vim logstash-x.x.x/sync/logstash-db-sync.conf
    • 将 JDBC 驱动文件复制到配置文件目录:cp ~/mysql-connector-java-5.1.41.jar logstash-x.x.x/sync/

  • ####配置文件示例(logstash-db-sync.conf)

    input {  jdbc {    # 数据库连接信息    jdbc_driver_library => "/usr/local/sql/mysql-connector-java-5.1.41.jar"    jdbc_driver_class => "com.mysql.jdbc.Driver"    jdbc_connection_string => "jdbc:mysql://你的数据库地址:3306/你的数据库名"    jdbc_user => "数据库用户名"    jdbc_password => "数据库密码"    # 分页配置    jdbc_paging_enabled => "true"    jdbc_page_size => "10000"    # 定时执行 SQL    schedule => "* * * * *"    statement => "SELECT * FROM 表名 WHERE update_time >= :sql_last_value"        # 其他配置    use_column_value => "true"    last_run_metadata_path => "/usr/local/logstash-x.x.x/sync/syncpoint_table"    tracking_column_type => "timestamp"    tracking_column => "update_time"    clear_run => "false"    lowercase_column_names => "false"  }}output {  elasticsearch {    hosts => ["你的 ES 地址:9200", "你的 ES 地址:9201"]    index => "你的 ES 索引名"    document_id => "%{id}"    document_type => "_doc"  }  stdout {    codec => "json_lines"  }}

    3. 启动

  • 进入 Logstash 的 bin 目录cd logstash-x.x.x/bin/
  • 启动 Logstash 并指定配置文件
    ./logstash -f ../sync/logstash-db-sync.conf

  • 4. 获取 Logstash 模板(可选:添加分词操作)

    如果需要对数据进行分词处理,可以遵循以下步骤:

    ####添加分词模板

  • 创建模板文件vim logstash-ik.json
    {  "analyzer": "ik_max_word"}
  • 获取默认模板:访问你的 ES 地址:http://your_es_ip:9200/_template/logstash
  • 复制默认模板到本地文件
  • ####修改配置文件在 logstash-db-sync.conf 中添加以下配置:

    output {  elasticsearch {    # 模板名称    template_name => "你的模板名称"    # 模板路径    template => "../sync/logstash-ik.json"    template_overwrite => "true"    manager_template => "false"  }}

    通过以上配置,你可以实现从数据库到Elasticsearch的实时数据同步。如果有更多问题,可以参考 Logstash 官方文档或查阅社区资料。

    转载地址:http://bztyk.baihongyu.com/

    你可能感兴趣的文章
    Mysql: 对换(替换)两条记录的同一个字段值
    查看>>
    mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
    查看>>
    MYSQL:基础——3N范式的表结构设计
    查看>>
    MYSQL:基础——触发器
    查看>>
    Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
    查看>>
    mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
    查看>>
    mysqldump 参数--lock-tables浅析
    查看>>
    mysqldump 导出中文乱码
    查看>>
    mysqldump 导出数据库中每张表的前n条
    查看>>
    mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
    查看>>
    Mysqldump参数大全(参数来源于mysql5.5.19源码)
    查看>>
    mysqldump备份时忽略某些表
    查看>>
    mysqldump实现数据备份及灾难恢复
    查看>>
    mysqldump数据库备份无法进行操作只能查询 --single-transaction
    查看>>
    mysqldump的一些用法
    查看>>
    mysqli
    查看>>
    MySQLIntegrityConstraintViolationException异常处理
    查看>>
    mysqlreport分析工具详解
    查看>>
    MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
    查看>>
    Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
    查看>>