Spring 来自 Spring 引导(logstash-logback-encoder)的 Logstash 记录的数据 Elasticsearch @Id
Spring Data Elasticsearch @Id for Logstash Records from Spring Boot (logstash-logback-encoder)
我很好奇人们在他们的 Java 实体中使用什么作为 @Id 来使用 Spring-Data-Elasticsearch 提取 Logstash 数据?汇入 Logstash 的日志数据没有明显的候选者。最接近的可能是时间戳,但不能保证它是唯一的。同样显然 Spring 不支持 ZonedDateTime 作为 @Id。
我正在使用 Spring Boot 2.0.0.RELEASE。默认的 logback logstash 编码器可以很好地写入文件系统。我让 Filebeat 将其发送到 Logstash,然后发送到 Elasticsearch (5.5.x).
我正在编写一个 Java 应用程序来对日志执行各种操作。我正在使用 Spring Data Elasticsearch (3.0.5.Release).
上面写的 Elasticsearch 中的记录示例:
{<br>
"_index":"logstash-2017.09.08",
"_type":"log",
"_id":"AV5j2z-qpNewjNB_ukIA",
“_version”:1,
“_分数”:1,
“_来源”:{<br>
"offset":18441,
"level":"ERROR",
"input_type":"log",
"source":"/var/log/somecompany/configuration_service/json/configuration_service_json_events.json",
"message":" *************************** 应用程序启动失败 ************ *************** 描述:配置为侦听端口 8888 的 Tomcat 连接器无法启动。该端口可能已被使用或连接器配置错误。操作:验证连接器的配置,识别并停止任何正在侦听端口 8888 的进程,或将此应用程序配置为侦听另一个端口。",
"type":"log",
"tags":[<br>
"beats",
"beats_input_codec_plain_applied"
],
"@timestamp":"2017-09-08T23:37:41.639Z",
"application_name":"configuration-service",
"thread_name":"main",
"level_value":40000,
“@版本”:1,
"beat":{<br>
"hostname":"f3758598e319",
"name":"f3758598e319",
"version":"5.5.2"
},
"host":"f3758598e319",
"logger_name":"org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter",
"application_version":"3.14.0-快照"
}
}
我在发布后不久就找到了我的答案。
如果我声明一个 String id 并将其注释为 @Id,那么框架会正确地从 E.S.
中拉回内部自动生成的 _id 字段
@Id
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
我很好奇人们在他们的 Java 实体中使用什么作为 @Id 来使用 Spring-Data-Elasticsearch 提取 Logstash 数据?汇入 Logstash 的日志数据没有明显的候选者。最接近的可能是时间戳,但不能保证它是唯一的。同样显然 Spring 不支持 ZonedDateTime 作为 @Id。
我正在使用 Spring Boot 2.0.0.RELEASE。默认的 logback logstash 编码器可以很好地写入文件系统。我让 Filebeat 将其发送到 Logstash,然后发送到 Elasticsearch (5.5.x).
我正在编写一个 Java 应用程序来对日志执行各种操作。我正在使用 Spring Data Elasticsearch (3.0.5.Release).
上面写的 Elasticsearch 中的记录示例:
{<br>
"_index":"logstash-2017.09.08",
"_type":"log",
"_id":"AV5j2z-qpNewjNB_ukIA",
“_version”:1,
“_分数”:1,
“_来源”:{<br>
"offset":18441,
"level":"ERROR",
"input_type":"log",
"source":"/var/log/somecompany/configuration_service/json/configuration_service_json_events.json",
"message":" *************************** 应用程序启动失败 ************ *************** 描述:配置为侦听端口 8888 的 Tomcat 连接器无法启动。该端口可能已被使用或连接器配置错误。操作:验证连接器的配置,识别并停止任何正在侦听端口 8888 的进程,或将此应用程序配置为侦听另一个端口。",
"type":"log",
"tags":[<br>
"beats",
"beats_input_codec_plain_applied"
],
"@timestamp":"2017-09-08T23:37:41.639Z",
"application_name":"configuration-service",
"thread_name":"main",
"level_value":40000,
“@版本”:1,
"beat":{<br>
"hostname":"f3758598e319",
"name":"f3758598e319",
"version":"5.5.2"
},
"host":"f3758598e319",
"logger_name":"org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter",
"application_version":"3.14.0-快照"
}
}
我在发布后不久就找到了我的答案。
如果我声明一个 String id 并将其注释为 @Id,那么框架会正确地从 E.S.
中拉回内部自动生成的 _id 字段@Id
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}