Инкрементная индексация с использованием сценария удаления дескриптора logsta sh - PullRequest
0 голосов
/ 22 января 2020

Я использую ниже конфигурацию Logsta sh для выполнения инкрементной индексации при каждом добавлении или обновлении новой строки. Я могу получить эти конкретные строки с сервера MS SQL и вставить его в качестве документа вasticsearch, но проблема с операцией удаления.

Logsta sh файл конфигурации

input {
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://xxxxx;databaseName=xxxx;"
jdbc_user => "xxxx"
jdbc_paging_enabled => true
tracking_column => modified_date
tracking_column_type => "timestamp"
use_column_value => true
jdbc_password => "xxxx"
clean_run => true
schedule => "*/1 * * * *"
statement => "Select * from [dbo].[xxxx] where modified_date >:sql_last_value"
}
}

filter {
 mutate {
   remove_field => ["@version","@timestamp"]
 }
}

output {
elasticsearch {
hosts => "xxxxx"
user => "xxxxx"
password => "xxxxx"
index => "xxxxx"
document_type => "_doc"
document_id => "%{id}"

}
stdout { codec => rubydebug }
}

Как удалить документы, которые удаляются на сервере MS SQL, с использованием метода инкрементной индексации используя Logsta sh. Я не имею ни малейшего представления о том, как обрабатывать, в частности, операцию удаления.

Может кто-нибудь подсказать, как этого добиться?

1 Ответ

0 голосов
/ 22 января 2020

Привет, все, что я могу обработать, вставить, обновить и удалить, используя приведенный ниже код. Это может быть полезно для того, кто пробует то же самое

input {
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://xxxxx:1433;databaseName=xxxxx;"
jdbc_user => "xxxxx"
jdbc_paging_enabled => true
tracking_column => modified_date
tracking_column_type => "timestamp"
use_column_value => true
jdbc_password => "xxxxx"
clean_run => true
schedule => "*/1 * * * *"
statement => "Select * from [dbo].[xxxx] where modified_date >:sql_last_value"
}
}

filter {
if [is_deleted] {
        mutate {    
            add_field => {
                "[@metadata][elasticsearch_action]" => "delete"
            }
        }
        mutate {
            remove_field => [ "is_deleted","@version","@timestamp" ]
        }
    } else {
        mutate {    
            add_field => {
                "[@metadata][elasticsearch_action]" => "index"
            }
        }
        mutate {
            remove_field => [ "is_deleted","@version","@timestamp" ]
        }
    } 
}

output {
elasticsearch {
hosts => "xxxxx"
user => "elastic"
password => "xxxxx"
index => "xxxxx"
action => "%{[@metadata][elasticsearch_action]}"
document_type => "_doc"
document_id => "%{id}"

}
stdout { codec => rubydebug }
}

Спасибо всем особенно Клаудио М

...