У меня есть столбец в MySQL с json в одном из столбцов, я должен реализовать поиск по этому столбцу с несколькими ключами.Я попытался использовать log stash для создания индекса с помощью Mysql.
Вот моя конфигурация log stash.Информация - это столбец с типом text и парами json в виде текста
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/dbname"
# The user we wish to execute our statement as
jdbc_user => "user"
jdbc_password => "password"
# The path to our downloaded jdbc driver
jdbc_driver_library => "/usr/share/java/mysql-connector-java-5.1.38.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
# our query
statement => "SELECT info FROM organization"
}
}
output {
stdout { codec => json_lines }
elasticsearch {
"hosts" => "localhost:9200"
"index" => "new_index"
"document_type" => "doc"
}
}
Я попытался создать отображение индекса и установить одно из полей как вложенное в отображение, но ничего не было загружено в мойиндекс.Необработанное обновление MySQL для индексации обрабатывает мой json как текст, что усложняет поиск.У любого есть лучшее решение для обновления столбца json в индекс, чтобы я мог искать по ключу.
Вывод.
{
"check_index" : {
"aliases" : { },
"mappings" : {
"doc" : {
"properties" : {
"@timestamp" : {
"type" : "date"
},
"@version" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"info" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1528870439037",
"number_of_shards" : "5",
"number_of_replicas" : "1",
"uuid" : "MkNrBMD8S8GYfDtxRyOFfg",
"version" : {
"created" : "6020499"
},
"provided_name" : "check_index"
}
}
}
}
есть информация моя строка JSON.В котором у меня есть много ключевых значений, например, для: адреса, имен и т. Д. В json, поэтому вместо отдельного столбца такого поля я создал для него json и добавил его в столбец.Но я не могу искать на этом JSON.