Railsのデータを雑にelasticsearchで可視化する

とにかく簡単にRailsのデータをelasticsearchで可視化したかったので、雑にRubyスクリプトを作成した。

RailsSQLiteのデータを、curlで単純にelasticsearchに登録するだけ。 モデルのIDでXDELETEしてから、XPUTするので、一応最新のデータに更新される。

ちゃんとやりたい時は、例えば、rest-client使う等適宜修正して使う。

実は自分の支出をelasticsearchで手軽に多面的に見たかった。で、いちいちjson投げるのめんどいのでRailsからデータ登録できるようにしたかっただけ。完全に自分用のプロトタイプなので凝る必要なし。

#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}
  
}