2017-03-28 7 views
0

これは、logstashのJDBCインポータを使用してelasticsearchにエクスポートする際に、document_typeとdocument_idの間に頭を抱えています。Logstash/Elasticsearch JDBC document_idとdocument_type?

私は最終的にインデックスの周りに頭を包んだ。しかし、センサーID(湿度/気象関連データ)が時間と共に記録されているセンサーデータ(温度/湿度/ etc ...のような)のテーブルからプルするようなふりをすることができます。 (だから大きなテーブルです)

そして、私はたびたびXのデータベースをポーリングし続けたいと思います。

この例では、document_typeとdocument_idはどのようなものか、これは1つのインデックスに対して(これを呼び出すものとして)保存されます。

document_typeとdocument_idは、特にJDBCインポータに関して私を混乱させます。

document_idにプライマリキーを設定すると、毎回上書きされませんか?だから私は毎回1つのデータのドキュメントを持っていますか? (意味がないと思われる)

答えて

1

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" } 
     } 
    } 
    } 
} 

:)

+0

ワウありがとう、これはおそらく私がこれらの2つで見た最良の説明です! – msmith1114

+0

申し訳ありませんが、これはおそらく遅い質問です:しかし、私はマッピングを設定するために「必要なのですか?私はそれらの正確な必要性を確信していないと思いますか? マッピングを設定する必要がない場合は、タイプが本当に必要ですか? – msmith1114