第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
あたりを参照して
mapper-attachments-plugin github.com
あたりでExtractしてElasticsearchへindexさせている様子
あとはまだ下記の課題がある様子で改善に取り組んでいるみたいです
課題
- 検索UIが提供されていない
- 不整合発生時(sambaサーバとESの間での不整合)の解消方法
- 汎用性
- セキュリティ
企業・業界情報プラットフォームSPEEDAにおけるElasticsearchの活用 株式会社ユーザベース 北内 啓さん @tau3000
www.slideshare.net
企業、プロダクトの紹介
- NewsPicksは色々見るけどSPEEDAはあまり見ないなー。と思ってたら、前者は個人ユーザ向け・後者は法人向けという事らしい
- デモで見たけど業界ごとの詳細レポートデータがかなり充実してた
- SPEEDAは下記の役割の人がいる
- エンジニア、アナリスト、コンサルサービス(カスタマーサポートのような直接人がサポートするポジション)
本題
と言った過去を経験して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
に注目してると言ってたけど下記あたりをちょっとじっくり見てみるか
クローラーあたりの技術やノウハウもすごそうだなーと感じた
Elasticsearchベースの全文検索システムFess 株式会社エヌツーエスエム 菅谷信介さん
Fessというプロダクトをもとに発表されてた
www.slideshare.net
オープンソース全文検索サーバー Fess — Fess 10.1 ドキュメント
- Fessというプロダクトで古くはNamazu、lucene、Solrあたりからプロダクトに活用していてその流れからElasticsearchを使っている様子
ロール検索というユーザによって検索可能な領域を限定して検索させる機能があるらしい
plugin開発を多くしているようで下記にオープンソースになっている
- いろいろと見てみるとほぼ菅谷さん一人で書いている?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
というものが出てきてて下記あたりをちょっと追いかけたいなと思った