Elasticsearch系列-logstash导入数据

Elasticsearch系列-logstash导入数据

安装准备

  • 准备logstash:下载准备好elasticsearch相应版本的logstash版本文件。我这里elasticsearch版本使用的是7.12.0,所以下载相应版本。官网下载地址
  • 准备导入数据:这里准备的是一个电影csv文件数据。下载地址

配置

解压logstash文件,进入config目录下,可以看到一个logstash-sample.conf文件,复制一份并命名为logstash-movies.conf

配置文件自己可以随便命名,只要你自己能正确找到,并识别就行

编辑文件:

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

# 读取数据配置
input {
  file {
  	# 导入文件目录地址
	path => "D:/Tool/ml-25m/movies.csv"
	start_position => "beginning"
  }
}

# 过滤 格式化数据配置
filter {

  # 配置读取csv文件
  csv {
    # 设置拆分符为 逗号
    separator => ","
    # 指定csv文件的字段 按顺序匹配
    columns => ["id","content","genre"]
  }
  
  # 对genre字段内容进行处理
  mutate {
    split => { "genre" => "|" }
    remove_field => ["path", "host","@timestamp","message"]
  }

  # 对content字段内容进行处理
  mutate {
    split => ["content", "("]
    # 添加字段 title 
    add_field => { "title" => "%{[content][0]}"}
    # 添加字段 year
    add_field => { "year" => "%{[content][1]}"}
  }

  mutate {
    # 对year字段进行类型转换
    convert => {
      "year" => "integer"
    }
    strip => ["title"]
    # 删除字段
    remove_field => ["path", "host","@timestamp","message","content"]
  }
}

# 输出配置
output {
  # es相关配置
  elasticsearch {
    hosts => "http://localhost:9200"
    index => "movies"
	document_id => "%{id}"
    #user => "elastic"
    #password => "changeme"
  }
  stdout {}
}

进入bin目录,启动logstash:通过-f 参数指定配置文件启动

.\logstash.bat -f D:\Tool\logstash-7.12.0-windows-x86_64\logstash-7.12.0\config\logstash-movies.conf

我这里使用的是本地测试,使用的Windows系统,所以使用.bat执行。

问题

  1. 启动数据没办法写入到elasticsearch中:
    原因:因为我是在Windows环境启动,配置文件相关目录是Windows系统文件系统,注意分隔符。

    input {
      file {
      	# 目录层级使用 "/"  而不要直接拷贝复制 使用的  "\" 会导致找不到文件,从而导致数据不能正常导入
    	# path => "D:\Tool\ml-25m\movies.csv" 这种路径不能正常导入
    	path => "D:/Tool/ml-25m/movies.csv"
    	start_position => "beginning"
      }
    }
    
  2. 导入数据成功后,删除相关索引,再次执行导入,数据不能正常导入
    原因:logstash可能存在机制,识别数据的唯一性,避免重复导入数据,具体情况,没有具体去研究。
    解决:删除logstash文件夹中data目录下的所有文件,重新执行启动logstash

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Layne_lei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值