Ho qualche input logstash in cui utilizzo lo document_id
per rimuovere i duplicati. Tuttavia, la maggior parte degli input non ha uno document_id
. Il seguente scandaglia l'effettivo document_id
attraverso, ma se non esiste, viene accettato come letteralmente %{document_id}
, il che significa che la maggior parte dei documenti viene vista come un duplicato l'uno dell'altro. Ecco ciò che il mio blocco di uscita appare come:output logstash su elasticsearch con document_id; cosa fare quando non ho un documento_id?
output {
elasticsearch_http {
host => "127.0.0.1"
document_id => "%{document_id}"
}
}
ho pensato che potrei essere in grado di utilizzare un condizionale in uscita. Non riesce e l'errore è riportato sotto il codice.
output {
elasticsearch_http {
host => "127.0.0.1"
if document_id {
document_id => "%{document_id}"
}
}
}
Error: Expected one of #, => at line 101, column 8 (byte 3103) after output {
elasticsearch_http {
host => "127.0.0.1"
if
Ho provato alcuni "if" e tutti falliscono, motivo per cui presumo il problema sta avendo un condizionale di qualsiasi tipo in quel blocco. Qui ci sono le alternative che ho provato:
if document_id <> "" {
if [document_id] <> "" {
if [document_id] {
if "hello" <> "" {
perfetto. Come ho detto a Val, preferisco questo nel caso in cui l'uuid venga omesso accidentalmente. – tedder42