$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

第10回elasticsearch勉強会に行ってきました

elasticsearch.doorkeeper.jp

最近elasticsearchを触ることがあるので勉強会に行ってきました。


今回のなかで個人的に一番面白かったのは@mats116さんの「AWSで実現するelasticsearchの大規模運用」という話。nodeをmaster/data/searcher/indexerという役割に分けて、インフラを構成しているという話がなるほどという感じ。ある程度大規模になると大体master/data/searcherみたいな構成になりそうに感じる。searcherの部分はhttp.enabledをfalse、node.dataをfalseにするといっていたので、なんかのライブラリを利用してtransport層で通信しているのかなと思った。


またjohtaniさんの紹介していたelasticonの発表の中で、以下の話が面白そうだったので時間がある時にでも見てみたい。


以下は適当に取っていたメモです。聞き逃したりとかしてたので、間違っているところがあったらすいません。

elasticonの報告と商用プラグインの紹介

AWSで実現するelasticsearchの大規模運用

  • DMPでのデータ管理をESでやってる
  • master/data/searcher/indexerの4つのノード構成
    • master3台、data80台、searcher3台、indexer1台くらいの構成
    • masterはmasterに徹しているnode
    • dataはいわゆるdata node
    • searcherは検索のクエリを投げるnode、http無効、data無効にして、おそらくjavaかなにかでtransport層を利用して、データを検索している様子
    • indexerはインデックスを作成するクエリを投げる専用らしい
      • リアルタイム更新はやってなく、1日に2~3回フルインデックスをかける & 古いデータは捨てるということをやっているようなので、indexerが必要になってそう?
  • replicaの置き場所をregionでうまくわけるようにすることで、冗長化をしているみたい
  • AWSのAutoScalingを利用しているらしい
    • elasticsearchのrecoveryをチューニングすることで、lifecycleが来て落ちて新しく立ち上がった時もデータが消えずに何とかなってるということみたい
    • ちなみに台数増やすときは手動で増やしている、台数が減ることはない、と言っていたので???となったが、いわゆるAutoScaleはやってなさそう
  • searcherとmasterを分けたのは、検索で重いクエリを投げると落ちることがあったため
  • 懇親会でパフォーマンス測定にはどういうツールを利用した??と聞いた所
    • 以前は他の全文検索ミドルウェアを利用していたので、それを置き換えるという作業だったので利用実態は分かっていた
    • pythonとかを利用して普通に計測を行った

Spark in small or middle scale data processing with Elasticsearch

  • 検索にESを利用しているが、特定のURLのメタデータを集計するためにどうしたかという話っぽい
  • ESにURLごとのデータをためておいて、それを利用してApache Sparkで処理、処理した内容をまたESに登録し、処理した内容にたいしてクエリを発行する、という感じ
  • Apache Sparkを使い続けるの大変そうだけど、どういう感じなんだろうと思った

Elasticsearchのサジェスト機能を使った話

  • elastic-analysis-icuというのを利用することで、いろいろな文字を正規化できるようだった
  • パフォーマンスのテストツールにはGatling( http://gatling.io/#/ ) というのを利用したらしい

Elasticsearchで作る形態素解析サーバ

開発効率UP! Elasticsearch Client Tool 作ってみた

変わり種プラグインの作り方