読者です 読者をやめる 読者になる 読者になる

Tsuyoshin blog

所属団体とは関係なく、個人的なblog

第16回elasticsearch勉強会に参加してきた

勉強会

概要

下記の勉強会に参加した時のメモ elasticsearch.doorkeeper.jp

はじめに

よくある検索サービスやログ+分析と言ったところに使われるElasticSearchの勉強会

発表

LogstashとElasticsearchで作るEnterprise Search Platform Elastic Kosho Owaさん

今まではログ+分析、検索メインの使い方の紹介が多かったが、ちょっとそれとは違う話

内容的にはESP(Enterprise Search Platform)なので社内に保管・運用されている様々な形式のデータを横断的に検索するシステムの紹介と言ったところかな

Elasticsearch + Fluentのパターンで使ってる人は大多数でしたが、Elasticsearch + Logstashで使ってる人はちょっと少なくてネタになってた

以前近くにいた人と世間話をした際にその方が、社内の情シスの部門の方だった。自分はwebの人なので言い方むずいけど割と固い方もいるんだなぁと感じたが、こういう活用もあるのかとちょっと納得した。参加者の方でスーツの方が多いのはこのあたりかな

簡単に技術的なところをピックアップすると下記

  • inotify
  • fanotify
  • vfs_full_audit

あたりを参照して

あたりでExtractしてElasticsearchへindexさせている様子

あとはまだ下記の課題がある様子で改善に取り組んでいるみたいです

課題

  • 検索UIが提供されていない
  • 不整合発生時(sambaサーバとESの間での不整合)の解消方法
  • 汎用性
  • セキュリティ

企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用 株式会社ユーザベース 北内 啓さん @tau3000

www.slideshare.net

企業、プロダクトの紹介

www.uzabase.com

  • NewsPicksは色々見るけどSPEEDAはあまり見ないなー。と思ってたら、前者は個人ユーザ向け・後者は法人向けという事らしい
  • デモで見たけど業界ごとの詳細レポートデータがかなり充実してた
  • SPEEDAは下記の役割の人がいる
    • エンジニア、アナリスト、コンサルサービス(カスタマーサポートのような直接人がサポートするポジション)

本題

  • いかにデータの隅々まで効率的にアクセスするかがポイント
  • 過去には全てmysqlで対応していた時代があり、現地通貨のみで6億レコードが存在してた様子。もちろんmysql のindexがカオス問題に直面

と言った過去を経験してElasticsearchへ切り替えてた

インデックスに関して

  • 1企業を1ドキュメントとして持つ。すべて1ドキュメントで持つ。mysqlでいうと1つのテーブルにすべて突っ込むイメージ
    • 財務や現地通貨、主要6通貨も一緒のドキュメントに持つらしいです
    • 1ドキュメトで最大約40MB、約11万フィールドに及ぶ

そんなに1ドキュメントにフィールドを突っ込んで普通に動くんだと感心した。

しかもバージョンは1.x

企業名検索に関して

  • 日本語は文字bi-gram、英語は文字uni-gramで
    • uni-gramは流石にインデックスが大きくなりすぎるけど
  • phrase_prefixを使う日本語は文字単位、英語は前方一致
    • max_expansionsを活用して制御を加えている
  • 英語ではストップワードを活用
  • 小規模なデータについてはRDBのデータの内容をオンメモリにして検索させてるのでElasticsearchと併用している
  • ノードの役割分けは当初なく、Full GCが走ったノードに検索が走りのたびにツライ状況に
    • その後ちゃんと役割分けをして改善へ

最後にElasticsearchのバージョンアップとinner hitsに注目してると言ってたけど下記あたりをちょっとじっくり見てみるか

www.elastic.co

クローラーあたりの技術やノウハウもすごそうだなーと感じた

Elasticsearchベースの全文検索システムFess 株式会社エヌツーエスエム 菅谷信介さん

Fessというプロダクトをもとに発表されてた

www.slideshare.net

オープンソース全文検索サーバー Fess — Fess 10.1 ドキュメント

  • Fessというプロダクトで古くはNamazulucene、Solrあたりからプロダクトに活用していてその流れからElasticsearchを使っている様子
    • Namazuというワードは非常に懐かしさを感じてしまった。
    • perlをよく書いててこの辺りに当たってよく調べた記憶がある
    • KAKASIとかもあったなー
  • ロール検索というユーザによって検索可能な領域を限定して検索させる機能があるらしい

  • plugin開発を多くしているようで下記にオープンソースになっている

github.com

  • いろいろと見てみるとほぼ菅谷さん一人で書いている?w

形態素解析の辞書をカスタマイズしてクラスタに配るってゆう部分でElasticsearchに食わせる(indexさせる)時に使う辞書と検索の時に使う辞書を合わせないと期待値がずれる場合があると。確かに陥りそうな部分だなー。

LT 「ElasticsearchとGCPのネットワークでハマった話」 株式会社サイバーエージェント 平田大地 さん @daichild

すでに公開されてたのでリンクを貼っておく

ElasticsearchとGCPのTCP Keepaliveではまった話 - blog.daich.org

  • GCPでの活用事例も今後増えるだろうし、新しいクラウドでのよくはまるFirewall問題の内容だった
  • AWSでmulticast discoveryが使えない課題とかを思い出した。。。
  • ネットワーク周りの課題はソフトウェアエンジニアからするとちょっと馴染みのないことだったりするのでデバッグの仕方とか改めて参考になった

LT スクリプトフィールドで作るランキングみたいな何か」iwag さん

elasticsearch で作るランキング - SSSSLIDE

  • スクリプトは重い、比べたらもちろんプラグインのが軽いんだけど、開発のしやすさでスクリプトを使うのは利用場面ありそう
  • Elasticsearchへデータを投入する前にRabbitMQ(メッセージキュー)を使ってリアルタイム性よりはデータの整合性を優先させてた
  • スライドの中に出てくるfielddataはES2.x系からはdoc_valueというものが出てきてて下記あたりをちょっと追いかけたいなと思った

www.elastic.co

www.elastic.co

最後・まとめ・感想

  • リクルートテクノロジーズさんの階の高いスペースではwimaxが圏外になるので使いえないって前にやったミスを再度やってしまった
    • 次回こそは学習します
  • SPEEDAでのESの利用で、約11万フィールドってどうやって管理してるんだろう。。。と思った。
  • 1ドキュメントの保存数も驚いたし、そんな手荒い使い方しても普通に動くんだと知れたのは大きかった
    • 自分でも使っててもなかなかそんな場面にならないので
  • 次回は懇親会に参加したいな
  • 早く自分たちもバージョンあげないと