Oracleでelasticsearch-river-jdbc

Oracleでelasticsearch-river-jdbc

elasticsearchとOracleの連携

  1. elasticsearchセットアップ
  2. ojdbc6.jarを以下のURLよりダウンロード
  3. ojdbc6.jarをelasticsearch配下に移動
    • mv ./ojdbc6.jar $ES_HOME/plugins/jdbc/
    • $ES_HOMEはelasticsearchをインストールしたディレクトリです。
  4. elasticsearchを起動又は再起動
    • /etc/init.d/elasticsearch restart 又は $ES_HOME/bin/elasticsearch restart

elasticsearch-river-jdbcを使って、Oracle側と同期する際にハマった点

  • _idの指定
    • _idを指定しないと、elasticsearchとOracleに入っているレコードの関連付けが出来ないため、Oracle側の更新をelasticsearchに反映できない
    • ※削除されたレコードの同期には非対応のため、DEL_FLGカラムを追加して論理削除とするなど工夫が必要

elasticsearchクエリSAMPLE

curl -XPUT 'localhost:9200/_river/oracle_test/_meta' -d '{
    "type" : "jdbc",
     "schedule" : "0 0-59 0-23 ? * *",
    "jdbc" : {
        "url" : "jdbc:oracle:thin:@//localhost/user",
        "user" : "oracle",
        "password" : "oracle",
        "sql" : "SELECT user_id AS \"_id\", user_name, user_level FROM user"
    }
}'

※_idを""で囲まないと、Oracle側でエラーが出る。_idに指定するカラムはNUMBER型でなくても可。