jdbc pluginは、各列に1つのフィールドを持つJSONドキュメントを作成します。あなたはそれがこのようになりますドキュメントとしてインポートされるだろう、そのデータを持っていたのであれば、あなたの例で一貫した保つために:
あなたが言ったとき、あなたは正しかった
{
"sensor_id": 567,
"temp": 90,
"humidity": 6,
"timestamp": "{time}",
"@timestamp": "{time}" // auto-created field, the time Logstash received the document
}
あなたの主キーにdocument_id
を設定した場合、それがあろうと上書きされます。あなたはこのタイプのデータでやりたいとは思わない、Elasticsearchの既存の文書を更新しない限り、document_id
を無視することができます。 Elasticsearchがあなたのために文書IDを生成させます。
次に、document_type
についてお話しましょう。ドキュメントタイプを設定する場合は、Logstashのtype
フィールドをある値に設定する必要があります(Elasticsearchに伝播されます)。したがって、Elasticsearchのtype fieldは、同様のドキュメントをグループ化するために使用されます。あなたは、JDBCプラグインで読み込むテーブル内のすべての文書が同じタイプである場合には(彼らがする必要があります!)、あなたはこのようなJDBCの入力にtype
を設定することができます...
input {
jdbc {
jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "mysql"
parameters => { "favorite_artist" => "Beethoven" }
schedule => "* * * * *"
statement => "SELECT * from songs where artist = :favorite_artist"
...
type => "weather"
}
}
今Elasticsearchでtype
フィールドを利用するには、そのタイプにmappingを設定します。たとえば、次のように指定することができます。
PUT my_index
{
"mappings": {
"weather": {
"_all": { "enabled": false },
"properties": {
"sensor_id": { "type": "integer" },
"temp": { "type": "integer" },
"humidity": { "type": "integer" },
"timestamp": { "type": "date" }
}
}
}
}
:)
ワウありがとう、これはおそらく私がこれらの2つで見た最良の説明です! – msmith1114
申し訳ありませんが、これはおそらく遅い質問です:しかし、私はマッピングを設定するために「必要なのですか?私はそれらの正確な必要性を確信していないと思いますか? マッピングを設定する必要がない場合は、タイプが本当に必要ですか? – msmith1114