fishでrbenvを使う
Ubuntuでfishを使っていて、rbenvの初期処理を実行する際に、詰まったので備忘録を残す。
最初に以下の記事を見つけて、config.fishを変更した。
設定内容はこれ。
togattti@dev ~> cat ~/.config/fish/config.fish rbenv init - | source
でも、ログインし直したら、エラーが出た。
'case' builtin not inside of switch block - (line 10): case "$command" in ^ from sourcing file - called on line 1 of file ~/.config/fish/config.fish from sourcing file ~/.config/fish/config.fish called during startup
rbenvは、1.1.1だから、そこまで古くないのだけど。。
とりあえず、Issueを見つけたので、以下のように設定を変更して、反映させた。
togattti@dev ~> cat ~/.config/fish/config.fish if status –is-interactive set PATH $HOME/.rbenv/bin $PATH . (rbenv init - | psub) end
参考
. (rbenv init -|psub) breaks fish shell executable files · Issue #501 · rbenv/rbenv · GitHub
日時範囲を指定して、Elasticsearchのデータを取得する。
curlで日時範囲を指定して、Elasticsearchのデータを取得する方法を示す。
取得対象のデータには、
(snip) "@timestamp" : "2017-08-16T16:51:06+09:00" (snip)
のような感じで、タイムスタンプが設定されていることを前提とする。
curlで、タイムスタンプを日時の範囲を指定して、データを取得したい場合は、
$ curl -XGET 'localhost:9200/elsdata-2017.08.16/elsdata/_search' -d '{ "query": { "range" : { "@timestamp" : { "gte" : "2017-08-16T16:18:00+09:00", "lte": "now", "format" : "date_time_no_millis" } } } }'
という感じで、JSONを渡してあげると取得できる。
gteとlteを指定することで、2017-08-16T16:18:00+09:00から現在までのデータを取得することできる。
タイムスタンプの形式によっては、formatを設定する必要があるので、ここから条件を満たすものを選び設定する。
また、10000件以上のデータを一度に取得したい場合は、scrollとsizeを指定して、リクエストすると取得できる。
以下の例は、30000万件のデータを取得する場合
$ curl -XGET 'localhost:9200/elsdata-2017.08.16/elsdata/_search?scroll=1m&size=30000&pretty' -d '{ "query": { "range" : { "@timestamp" : { "gte" : "2017-08-16T16:18:00+09:00", "lte": "now", "format" : "date_time_no_millis" } } } }'
embulk-parser-regexのエラー対応
Embulkプラグインのembulk-parser-regexで、regexのキーに、_(アンダースコア)を含めるとエラーになる。
regexを使う時は、キーに_を使わないようにしよう。
エラーメッセージ
Error: java.util.regex.PatternSyntaxException: named capturing group is missing trailing '>' near index 125 ^(?<from>[^%]+)%(?<uid>[^%]+)%(?<did>[^%]+)%(?<mid>[^%]+)%(?<type>[^%]+)%(?<to>[^%]+)%(?<status>[^%]+)%(?<ts>[^%]+)%(?<status_desc>[^%]+)%(?<host>[^%]+)%(?<uuid>[^%]+)$ ^
confg.ymlのサンプル
parser: type: regex # エラーが出る。 # regex: ^(?<from>[^%]+)%(?<uid>[^%]+)%(?<did>[^%]+)%(?<mid>[^%]+)%(?<type>[^%]+)%(?<to>[^%]+)%(?<status>[^%]+)%(?<ts>[^%]+)%(?<status_desc>[^%]+)%(?<host>[^%]+)%(?<uuid>[^%]+)$ # アンダースコアを消すとうまくいく。 regex: ^(?<from>[^%]+)%(?<uid>[^%]+)%(?<did>[^%]+)%(?<mid>[^%]+)%(?<type>[^%]+)%(?<to>[^%]+)%(?<status>[^%]+)%(?<ts>[^%]+)%(?<statusdesc>[^%]+)%(?<host>[^%]+)%(?<uuid>[^%]+)$ columns: (snip) # regex_nameもアンダースコアを修正 # - {name: status_desc, type: string, regex_name: status_desc} - {name: status_desc, type: string, regex_name: statusdesc} (snip)
Raspberry Pi 3でPhantomJSを使う
これをcloneすれば、すぐ使える。