1.数据格式为txt文本的json格式数据,首先需要将数据转换格式为csv格式
public static void main(String[] args) throws JSONException, IOException {
FileUtils.writeStringToFile(new File("F:\\es\\logstash\\logstash-7.6.2\\data\\es\\hotel\\ldrk.csv"), Json2Csv(getJonStr("F:\\es\\logstash\\logstash-7.6.2\\data\\es\\hotel\\ldrk.txt")));
}
public static String Json2Csv(String json) throws JSONException {
JSONArray jsonArray = new JSONArray(json);
String csv =CDL.toString(jsonArray);
return csv;
}
public static String getJonStr(String readPath) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(new File(readPath)));
String lineRead;
StringBuilder sb = new StringBuilder();
while ((lineRead = br.readLine()) != null){
sb.append(lineRead);
}
br.close();
return sb.toString();
}
依赖的maven pom 文件
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
2.编写conf文件
#1.读取数据csv文件,数据输入阶段
input {
file{
#设置csv文件路径,多个文件路径可设置成数组[],模糊匹配用*
#指定单一文件
path => "F:/es/logstash/logstash-7.6.2/data/es/hotel/mhdz.csv"
#可设置成begining或end,begining表示从头开始读取文件,end表示读取最新数据,可和ignore_older一起使用
#begining只针对首次启动是否需要读取所有的历史数据,而当csv文件修改了之后,同样会自动增量更新新数据
start_position => "beginning"
#codec => plain {
# charset => "ISO-8859-1"
#}
}
}
#2.过滤格式化数据阶段
filter {
#读取csv文件
csv {
#设置拆分符为逗号
separator => ","
#指定csv文件的字段,必须要和csv文件中的字段顺序一致
columns => ["dddd_rqsj","zjlx_cyzjdm","hkgsdm01","lk_wwx"]
}
mutate{
#删除无效的字段,可自定义
remove_field => ["@version","message","host","path"]
}
}
#3.数据输出到ES阶段
output {
stdout {
codec => json_lines
}
elasticsearch {
hosts => ["localhost:9200"]
index => "mhdz"
#document_id => "%{mhlkdzjlbh}%{gmsfhm}"
}
}
需要注意的点: path => “/e:xx” 这个在书写时必须在路径前面加上/ 不然会报错。 No sincedb_path set, generating one based on the “path” setting
3. 在指定的路径下存放csv文件。
4.运行logstash并指明配置文件存放的位置