私はmysql dbとelasticsearch dbを同期させて保持する方法を見つけようとしています。私はelasticsearchのためのjprante/elasticsearch-river-jdbcプラグインを使用してjdbc川をセットアップしました。私は以下のリクエストを実行する場合:elasticsearchとデータベースを同期させて保持
curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://localhost:3306/MY-DATABASE",
"user" : "root",
"password" : "password",
"sql" : "select * from users",
"poll" : "1m"
},
"index" : {
"index" : "test_index",
"type" : "user"
}
}'
川はインデックスデータを開始しますが、一部のレコードのために私はorg.elasticsearch.index.mapper.MapperParsingException
を取得します。この問題に関するディスカッションはhereですが、この問題を回避する方法を知りたいと思います。
インデックスを作成しようとしている 'タイプ'のすべての 'フィールド'に対してexplicit mappingを作成することでこれを修正することは可能ですか?この問題を解決するにはより良い方法がありますか?
もう1つの質問は、jdbc-riverがデータベースを再度ポーリングするときに、(SQLクエリで指定された)データセット全体を再びESに再インデックスするようです。私は確信していませんが、これはelasticsearchが新しいデータを追加するだけでなく、既存のデータの変更を更新したいからです。テーブルのデータが静的な場合は、新しいデータのみをインデックスすることは可能ですか?
[ElasticSearchがデータベースと同期していること]の複製可能性(http://stackoverflow.com/questions/11952558/ensuring-elasticsearch-is-in-sync-with-database) – mahemoff