Logstash导入数据到Elasticsearch时自定义mapping

**

Logstash导入数据到Elasticsearch时自定义mapping

准备:
Logstash环境win7,版本6.4.0
Elasticsearch环境win7中的docker,版本6.4.0
Elasticsearch装ik分词器点这里
一开始的想法也是在logstash.conf配置文件里output中加
template,指定自己写好的mapping.json文件,结果试了n次还是覆盖不了
后来我是这样解决的:
1,在Elasticsearch上先创建好索引以及mapping映射

put/my_index
{
  "settings": {
    "index.refresh_interval": "5s"
  },
  "mappings": {
    "doc": {
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "@version": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "id": {
          "type": "long"
        },
        "title": {
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "content": {
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "department": {
          "type": "keyword"
        },
        "release_time": {
          "type": "date"
        },
        "del_flag": {
          "type": "long"
        }
      }
    }
  }
}

然后cmd再到logstash的bin目录下执行.\logstash -f .\logstash.conf
logstash.conf文件如下

input {
  jdbc {
    jdbc_driver_library => "D:\work\mysql-connector-java-5.1.43.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://你的数据库IP:段口/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8"
    jdbc_user => "root"
    jdbc_password => "root"
    jdbc_default_timezone =>"Asia/Shanghai"
    tracking_column => "id"
    use_column_value => true
    schedule => "* * * * * *" 
    statement => "你的sql查询语句"
  }
}
//切换到北京时间
filter {
	ruby { 
		code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)" 
	}
	ruby {
		code => "event.set('@timestamp',event.get('timestamp'))"
	}
	mutate {
		remove_field => ["timestamp"]
	}
}

output {
   elasticsearch {
                 hosts => "192.168.99.100:9200"
                 index => "my_index"
                 timeout => 300
                 document_id => "%{id}" 
                 }
}

OK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值