2016-08-16 29 views
1

現在のプロジェクトでは、検索機能を改善したいと考えています。インターネットで何かを読んだ後、私はElasticsearchに行くことにしました。だから私はいくつかの質問があります。 私は既に本番データベースにデータを取り込みました。そのデータベースを索引付けする最良の方法は何ですか? データベースに新しいレコードを追加するには、弾性検索を追加する必要がありますか?またはデータをインデックス化するために何らかの仕事を作成することがありますか?
2つのデータベース(production db、Elasticsearch db)でデータの一貫性を保つにはどうすればよいですか?弾性検索インデックス

任意の提案、リンク、コメントなどは非常に歓迎されている おかげ

答えて

1

あなたはまだ答えが必要な場合、私は知らないが、私は現在Logstashを使用しています。私は基本的に入力用のjdbc sqlプラグインと出力用のelasticsearchプラグインを持っています。基本的には、接続を設定し、クエリを実行し、データの突然変異と出力を設定する設定ファイルを設定します。

あなたがでドキュメントを見ている場合:https://www.elastic.co/guide/en/logstash/current/index.html

設定の例を以下に見られることができると私はあなたが私が、インデックスにSQLデータベースからデータを転送するために、このスケジュールを設定することができます読みましたこれを個人的に設定していません。

このデータ転送を保護する必要があることに注意してください.SQLプラグインはこれをサポートしています。

input { 
jdbc { 
jdbc_driver_library => "file directory to sql driver" 
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver" 
jdbc_connection_string => "" 
jdbc_user => "" 
jdbc_password => "" 
lowercase_column_names => false 
statement => "SELECT IGF_UID AS id, IGF_NAME AS name FROM dbo.IGT_ENTITY" 
} 
} 
filter { 
if ![id] { 
    mutate { 
       replace => {"id" => "00000000-0000-0000-0000-000000000000"} 
      } 
    } 

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

} 

output { 
    elasticsearch { 
    hosts => "localhost" 
    index => "entities" 
    document_type => "entity" 
    manage_template => false 
    } 
}