とにかく簡単にRailsのデータをelasticsearchで可視化したかったので、雑にRubyスクリプトを作成した。
RailsのSQLiteのデータを、curlで単純にelasticsearchに登録するだけ。
モデルのIDでXDELETEしてから、XPUTするので、一応最新のデータに更新される。
ちゃんとやりたい時は、例えば、rest-client使う等適宜修正して使う。
実は自分の支出をelasticsearchで手軽に多面的に見たかった。で、いちいちjson投げるのめんどいのでRailsからデータ登録できるようにしたかっただけ。完全に自分用のプロトタイプなので凝る必要なし。
example.rb
#coding: utf-8
require "active_record"
# データベースへの接続
ActiveRecord::Base.establish_connection(
adapter: 'sqlite3',
database: 'development.sqlite3'
)
# モデルを定義
class Item < ActiveRecord::Base
end
# モデルの全データ取得
item=Item.all
item.each{|i|
# モデルを元にjsonを作成
data="'{\"item_name\":\"#{i.item_name}\",\"@timestamp\":\"#{i.item_date.strftime("%Y-%m-%d")}\"}'"
# elasticsearchのURL。IDはモデルのIDを使う。
url="http://localhost:9200/hoge/fuga/#{i.id}"
# elasticsearchの既存データを削除
command="curl -XDELETE #{url}"
`#{command}`
# elasticsearchにモデルのデータを登録
command="curl -XPUT #{url} -d #{data}"
`#{command}
}