Elasticsearch/Kibanaを6.2.2から6.3.0にupgradeした

6.3.0のrelease blogはこちら
https://www.elastic.co/blog/elasticsearch-6-3-0-released
https://www.elastic.co/blog/kibana-6-3-0-released

6.3.0からX-Packが標準で含まれるようになったのでインストールは不要で、最初からBasic Licenseが適用されています。

SQLもBasicに含まれていますが、JDBCは有償です。
https://www.elastic.co/subscriptions

なので
https://github.com/tokuhirom/unofficial-elasticsearch-jdbc-driver
をコピペして軽くJDBC Driverを作り始めましたが、進捗0です。
https://github.com/wyukawa/elasticsearch-jdbc-driver
他に良さそうなやつがあれば捨てて乗り換えます。


upgradeのやり方は
https://www.elastic.co/guide/en/elasticsearch/reference/6.3/rolling-upgrades.html
にある通りですが、注意点として古いバージョンのx-packをremoveする必要があります。

https://github.com/elastic/elasticsearch/issues/31465
https://github.com/elastic/kibana/issues/19957

で、上げた翌日にはKibanaのグラフが自動更新の際にチカチカするんだけど、、、という話があり、どうも下記を踏んだ模様。criticalなものではないと思うけど、気になる人は次のバージョンを待った方がいいかも。
https://github.com/elastic/kibana/issues/20240

Kibana 6.3.0からインデックス管理もできるようになったのですが、index templateの更新はできなそうなのでcerebroは依然として使う予定です。

今日cerebroを0.8.1にupgradeしたらクラスタ設定もいじれるようになっており進化を感じます。

Elasticsearch実践ガイドを読んでみた

目次

第 1 章 Elasticsearch とは
1-1 Elasticsearch が登場した背景
1-2 Elasticsearch の特徴
1-3 Elastic Stack について
1-4 Elasticsearch のユースケース
1-5 Elasticsearch の導入事例
1-6 まとめ
第 2 章 Elasticsearch の基礎
2-1 用語と概念
2-2 システム構成
2-3 REST API による操作
2-4 Elasticsearch の導入方法
2-5 まとめ
第 3 章 ドキュメント/インデックス/クエリの基本操作
3-1 ドキュメントの基本操作
3-2 インデックスとドキュメントタイプの管理
3-3 さまざまなクエリ
3-4 まとめ
第 4 章 Analyzer/Aggregation/スクリプティングによる高度なデータ分析
4-1 全文検索と Analyzer
4-2 Aggregation
4-3 スクリプティング
4-4 まとめ
第 5 章 システム運用とクラスタの管理
5-1 運用監視と設定変更
5-2 クラスタの管理
5-3 スナップショットとリストア
5-4 インデックスの管理とメンテナンス
5-5 refresh とflush
5-6 まとめ
第 6 章 Elastic Stack インテグレーション
6-1 Elastic Stack
6-2 X-Pack の活用
6-3 まとめ
索引

僕は管理者、ログ分析の文脈でElasticsearchを使っていて、検索エンジンとしてはあまり使っていません。
Analyzerとかクエリの書き方とかは全然わかってなくて本当に雰囲気で触っているのだが、
そういう人にとっては、もちろん普通にElasticsearchに入門する人でも、本書は役立つと思う。特に3,4章とか

運用管理者の視点からも5章はアップグレード方法だったり、Luceneのインデックスファイル構造まで書かれていて参考になった。

Elasticsearch絡みの日本語書籍は結構古くなっていて、最近で本書以前では下記があったのだが、こちらはFluentdも含めたログ分析基盤の観点から書かれた本なのでElasticsearch自体にはあまり踏み込んでいなかった。

Elasticsearch実践ガイドは逆にFluentdのような周辺システムにはあまり触れずにElasticsearchについて必要なことが書かれている。ただ本書が対象としているElasticsearchのバージョンが6.2だが、最近6.3が出たのはちょっとタイミングが悪かったかもしれない。6.3からX Packは別途インストールする必要なくなったしね。とはいえ本書はElasticsearchについて学ぶのに良書だと思う。

南魚沼グルメマラソンにいってきた

5年連続5回目の参加です。結果はネットタイムが2時間1分1秒でした。
参加した5回のなかではおそらくもっとも気温が低く走りやすかったと思うけど、練習不足でした。

06:08東京発の新幹線にのり浦佐駅には07:36到着。
今回はゼッケンや計測チップは事前発送だっただけど紛失したので1000円払って再発行して走りました。

ゴール後はごはんとつまみとビール。このあとカレーも食ってお腹いっぱい。

自分のいままでの人生においてもっともビールがうまかった瞬間ベスト5を上げろと言われれば、全て南魚沼グルメマラソンの時だろうなというぐらい今回もうまかったです。

presto/hiveクエリ変換

prestoでクエリを書いてあとでバッチ化するためにhiveに書き換えるというのはよくある話なので変換ルールをメモっておく。
prestoの方が機能的にリッチなんですが、安定性を考えるとバッチではhiveをうちの環境では使ってます。

一番よくつかうのがjson_extract_scalarをget_json_objectに変えることですね。2番目と3番目はそんなに使わないかも。

presto hive
json_extract_scalar get_json_object
cross join unnest lateral view explode
mod pmod

ただprestoとhiveで似ているけれど微妙に挙動が違うケースがあります。
例えばprestoのurl_extract_hostとhiveのparse_url(..., 'HOST')

前者はjava.net.URIを使ってます。
https://github.com/prestodb/presto/blob/master/presto-main/src/main/java/com/facebook/presto/operator/scalar/UrlFunctions.java#L187

後者はjava.net.URLを使ってます。
https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFParseUrl.java#L70

結果としてhiveのparse_url(..., 'HOST')だとandroid-app://xxxみたいなときにxxxを取得できません。

しょうがないのでjava.net.URIを使うようにしたhive udfを作成してそれを使うようにしました。

ロンドン観光

Strata Data Conference London 2018で発表してきたのですが、そのついでにちょっとだけ観光しました。


ウィンザー

グリニッジからの眺め

水上バスからの眺め

フィッシュアンドチップス

アビーロード

FAカップ決勝

エミレーツスタジアム

キューガーデン

エミレーツ・エア・ラインからの眺め

ウィンブルドン

リージェンツパーク

Strata Data Conference in Londonで発表してきた

abstractやスライドは下記からたどれます。

https://conferences.oreilly.com/strata/strata-eu/public/schedule/detail/65222

一度はrejectされたCFPが2週間前になってacceptになったので慌てて準備して発表してきました。

20人ぐらいは来てくれたかな。発表直後には質問が出なくてちょっと寂しかったけど、その後いくつか質問くれたのでよかったです。

英語は正直まだかなり厳しいのですが、発表すると会話しやすくなっていいですね。しかも今回は最後とはいえ初日だったので明日の二日目が気楽です。

基調講演の印象だけ言うとプライバシーだったりGDPRだったりそういう方面にフォーカスが当たっているのかなと思いました。

ロンドンで現金、VISAカード盗難にあった

諸事情でロンドンに一人で来ていて現金、VISAカード盗難したのでメモっておく。
他の人が似たような状況にならないようになればと思います。

ロンドンは治安の良いところだと思っていたのですが、まあこういうことに遭遇してしまったので用心した方がいいですねという話です。

今回、現金とVISAカードを封筒に入れてそれをショルダーバッグの中において使っていました。外ではそれぐらいしか使わないだろうと思って日本で使ってた財布(中に日本円とか免許証とかがある)はホテルにおいてました。

で、気づいたらその封筒がなくなっていたというオチ。紛失の可能性もなきにしもあらずですが、地下鉄で盗られたのかなあと思ってます。ランチ食おうとしてレストランに入って注文した後に気づいた。食った後じゃなくてよかった。オイスターカードという日本でいうSuicaはあったのでホテルに帰ることはできました。

で、クレジットカードを止める必要があるわけですが、そのためのコミュニケーション手段は電話しかないです。
ただ僕の携帯からかけてもつながらず、ホテルの電話を借りてもうまくいかず、ロンドンのVJデスクにかけてそこで教えてもらった電話番号を何個か試してやっとつながりました。コレクトコールがうまくいかず直接、ホテルから日本に国際電話になりました。

三井住友の盗難受付デスクとロンドンのVJデスクの電話番号は下記にあります。
ロンドンのVJデスクは日本語OKですし、今回めんどくさい話を英語でホテルの人にしてもらいました。感謝。
https://www.smbc-card.com/mem/goriyo/kaigai_lost_list.jsp
https://www.smbc-card.com/mem/service/tra/pop/vj_london.jsp

後からわかったのですが、僕はLINE Mobileをつかっていてこれはデフォルトだと国際通話できません。オプション登録する必要があります。登録はwebからできて1日で完了しました。
なのでLINE Mobileユーザで海外に行くときはこのオプションを登録した方が良いと思います。
https://mobile.line.me/plan/option/

もしかしたらLINE Outなら通話できたのかも。

今回の件に関して、思ったのは海外においては電話という手段はネットと比べるとそこまであてにできないなということです。もちろんケースバイケースではありますが。
本人確認が必要だから電話が必要なんでしょうが、電話といっても公衆電話やホテルの電話もあれば携帯電話もあり、携帯電話もキャリアやMVNOによって微妙に差があるので、こうすれば絶対通話できるというものがない気がします。

ネットだったら繋がりさえすれば、デバイスに違いはそんなにないと思いますし、チャットでやりとりできた方が楽ですよねという。

ともあれ、クレジットカードを止めたはいいものの今後お金どうするんだという話ですが、結論から言うと僕はたまたま別途ソラチカカードを持っていてこれでATMから現金引き落とせました。
http://www.to-me-card.jp/campaign/tome_ana/

もしこれができなかったら、VISAカードを緊急発行して現地で受け取るしかなかったと思います。その場合でも3日ほどはかかりますが。なお僕の場合は日本円を持っていたのでそれをポンドに変えておきました。

そういうのが一切ない場合は、ホテルからなんとかしてお金借りてカードくるまで待つ以外の選択肢を思いつきません。あったら共有していただけたら嬉しいです。

ちなみにソラチカカードを作った理由は、私鉄で定期+オートチャージしたいから以前作りました。
ソラチカカードはJCBベースで、JCBカードはぶっちゃけ海外ではほとんど使えないと思った方がいいと思います。

JCBプラザ・ロンドンに行って日本語で説明を聞きましたけど、少なくともロンドンで使える場所は限られているようです。
http://www.jcb.jp/ws/plaza/plaza_london.html

なのになんでATMでおろせたかというとソラチカカードがcirrus対応しているのでcirrusマークがあるATMなら、そこがJCB対応と書かれていなくてもキャッシングできるからです。LINE PayはJCBだけどICチップないのでNG

だらだら書いたのでまとめると、ひとりで海外行くときはクレジットカードは2枚持って別々に管理するべき、カードの種類はVISAとMasterがおそらく最強。LINE Mobileユーザは国際通話できるようにしておく、ですね。

あ、あと暗証番号は忘れないように。日本でクレジットカードの暗証番号入力することがあまりない方は忘れがちなので。

なんというか日本である程度シェアがあるけど海外ではほぼないサービスを使っていて海外でトラブルと厳しいですね。SPOFは避けて二重化大事という話でした。