Elasticsearch に jdbc リバーを使用して、mysql テーブル データのインデックスを作成しています。
私の川:
curl -XPUT 'localhost:9200/_river/river_mention_reports/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://localhost:3306/ESTest1_development",
"user" : "root",
"password" : "password",
"sql" : "select * from table where creation_time >= (NOW() - INTERVAL 2 MINUTE)",
"poll" : "2m",
"versioning" : false
},
"index" : {
"index" : "monitoring",
"type" : "mention_reports"
}
}'
川で指定した SQL クエリは次のとおりです。
select * from table where creation_time >= (NOW() - INTERVAL 2 MINUTE)
問題は、インデックスに新しいデータを追加するのではなく、クエリで指定された時間範囲 (現在のマイナス 2 分) の外側にインデックスが作成されたデータをすべてのポーリングの後の川が削除することです。時間範囲を指定した理由は、リバーがデータセット全体を何度も再インデックスすることを望まないためです。