Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Using Elasticsearch for Searching Articles and ...
Search
Elastic Co
December 16, 2015
Technology
1
400
Using Elasticsearch for Searching Articles and Log Analysis
Yuri Umezaki | Nikkei | Tokyo | December 16, 2015
Elastic Co
December 16, 2015
Tweet
Share
More Decks by Elastic Co
See All by Elastic Co
Les Vendredis noirs : même pas peur ! - Breizhcamp
elastic
15
1k
Confoo Montreal: Ingest node: enriching documents within Elasticsearch
elastic
16
960
Elastic{ON} 2018 - Sipping from the Firehose: Scalable Endpoint Data for Incident Response
elastic
6
4.3k
Elastic{ON} 2018 - A Security Analytics Platform for Today
elastic
3
11k
Elastic{ON} 2018 - The State of Geo in Elasticsearch
elastic
7
12k
Elastic{ON} 2018 - Reliable by design - Applying formal methods to distributed systems
elastic
5
4.8k
Elastic{ON} 2018 - Bigger, Faster, Stronger - Leveling Up Enterprise Logging
elastic
1
5k
Elastic{ON} 2018: Latest in Logstash
elastic
1
4.6k
Elastic{ON} 2018 - Lessons Learned from Workday's Search Application Journey from POC to Production
elastic
2
2.5k
Other Decks in Technology
See All in Technology
第65回コンピュータビジョン勉強会
tsukamotokenji
0
150
ABEJA FIRST GUIDE for Software Engineers
abeja
0
3.2k
AIと共に開発する時代の組織、プロセス設計 freeeでの実践から見えてきたこと
freee
4
710
ソフトウェア開発現代史: 55%が変化に備えていない現実 ─ AI支援型開発時代のReboot Japan #agilejapan
takabow
7
4.3k
Spring Boot利用を前提としたJavaライブラリ開発方法の提案
kokihoshihara
PRO
2
220
アジャイル社内普及ご近所さんマップを作ろう / Let's create an agile neighborhood map
psj59129
1
130
バクラクの AI-BPO を支える AI エージェント 〜とそれを支える Bet AI Guild〜
tomoaki25
2
770
Kubernetesと共にふりかえる! エンタープライズシステムのインフラ設計・テストの進め方大全
daitak
0
230
やり方は一つだけじゃない、正解だけを目指さず寄り道やその先まで自分流に楽しむ趣味プログラミングの探求 2025-11-15 YAPC::Fukuoka
sugyan
2
800
JAWS-UG SRE支部 #14 LT
okaru
0
110
[mercari GEARS 2025] なぜメルカリはノーコードを選ばなかったのか? 社内問い合わせ工数を60%削減したLLM活用の裏側
mercari
PRO
0
110
自己的售票系統自己做!
eddie
0
460
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
Done Done
chrislema
186
16k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
930
Writing Fast Ruby
sferik
630
62k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
Practical Orchestrator
shlominoach
190
11k
Making Projects Easy
brettharned
120
6.5k
Side Projects
sachag
455
43k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
Building Applications with DynamoDB
mza
96
6.8k
How STYLIGHT went responsive
nonsquared
100
5.9k
Transcript
2015/12 1 2015/12/16 日本経済新聞社 梅崎裕利 0 記事検索とログ解析での
Elasticsearch活用事例 自己紹介 • 日本経済新聞社デジタル編成局 • 梅崎 裕利 • 業務内容 § アプリケーション開発 o DjangoとElasticsearchでの検索API o スマホアプリのバックエンドAPI § サーバ管理 o EFKでアクセスログ可視化 o Ansible, Serverspec, Docker o Nginx, Varnish, HAProxy 1
2015/12 2 日本経済新聞社 • 1876年年創刊 • 紙と電⼦子合わせて300万部以上 2
日本経済新聞 電子版 • 2010年年創刊 • ⽇日本で初の本格的有料料電⼦子版サービス • 44万⼈人の有料料会員 • 複数デバイスで利利⽤用可能 3
2015/12 3 日本経済新聞 電子版 4 スマートフォン 紙面ビューアー
スマートフォ ンウェブ版 PC 新聞 マーケット用 ウェブアプリ ガラケー Windows 8 Elasticsearchとわたし 5
2015/12 4 Elasticsearchとの出会い • 2014年4月 入社 • 5月
配属 § DBの調査・検証をして社内で情報共有 § 検索の需要があったので、Solrを検証 § ちょうど1.0が出て話題のElasticsearchも検証 o 国内ではログ可視化の話が多かったが、 コンテンツ検索にも使えそう • 6月 Elasticsearchの実験ページを作って上司に見せる • 9月 気がつくとElasticsearch関係がメインの仕事に 6 なぜElasticsearchを選んだのか • ログ可視化とコンテンツ検索 両方に使える § 可視化ツールのKibana § 形態素解析や正規化など、便利なプラグイン • REST API § API構造が理解しやすい § スキーマやクラスタの設定もAPIで可能 • クラウド上でクラスタ構築・運用が容易 § スケールアップ・スケールアウト § ローリングアップデート • 高性能 § 15台クラスタで秒間9000リクエスト超 7
2015/12 5 Elasticsearchの利用箇所 • 大きく分けて2箇所で利用 • 記事検索 §
形態素解析(Kuromoji)、ngramを活用 § 検索回数は多いがデータはそれほどでない • アクセスログ解析 § FluentdとKibanaを利用して可視化 § 検索回数は少ないがデータ量、書き込みが多い 8 記事検索 9
2015/12 6 記事検索 • 日本経済新聞 電子版の記事 § データ数:約200万
§ データサイズ: 約5GB § 更新頻度: 数千回/日 (ピークは300件/分 程度) § リクエスト数: 秒間100回〜 • 新規開発アプリを中心に利用 10 記事検索API • ElasticsearchとDjangoで作成 § Django API o 有料記事など表示権限の管理 o Redisを利用して同義語展開やサジェスト情報の付与 o Elasticsearch-pyを利用 o 検索ログの保管・調査 § マスターはMySQLに保存し、随時ESにも書き込み § 2015年5月から本番稼働中 11 Elas8csearch Django API MySQL App
2015/12 7 記事検索用のスキーマ • KuromojiやICU normalizerを利用 12 記事検索用のスキーマ
• 一部はngramと形態素解析の両方でインデックス § 従来の検索エンジンと互換性を残すため • タイトルなどはnot_analyzedのfieldsも用意 § 完全一致も利用するため 13
2015/12 8 記事検索ログもElasticsearch • 検索ログの可視化(独自ツール) § 検索機能の改善に o スロークエリ
o キャッシュ率 o 検索数が多いのにヒットが0件のもの o ヒット数が少ない単語 o ヒット数が多すぎる単語 § 指標として o 検索ワードランキング o 急激にふえた検索ワード 14 記事検索の事例 • もっと日経 § 新聞記事をスマホで撮ると、関連記事やバックナンバーなどを表示 15
2015/12 9 記事検索の事例 • もっと日経の仕組み • 内部では記事をOCRしてElasticsearchで検索 •
課題 § カメラ性能などが原因で、OCR精度はあまり高くない o 直接検索にかけると全然ヒットしない o OCR結果からキーワードを抽出する必要があった 16 記事検索の事例 § 形態素解析の転置インデックスを活用してキーフレーズAPI作成 o 単語の出現回数を特徴量に利用 o 重み付けしてクエリに反映 (≒TF-IDFのような機能) § 精度が大幅に向上 17
2015/12 10 記事検索-Elasticsearchで良かったこと • 新規アプリの開発速度が格段に上がった § ドキュメントが豊富 §
内製化で、チューニングや機能追加が迅速に § エイリアス活用でスキーマ変更が本番稼働中でも可能 • クラウド上でサーバのスケーリングが容易 § 普段は3台(r3.xlarge) 高負荷時は15台程度 • アップデートが簡単 § 現在は2.1.0が稼働中 § V1からV2への移行を除き、シームレスにローリングアップデートできている 18 アクセスログ解析 19
2015/12 11 アクセスログ解析 • ApacheやNginxなどWebサーバのアクセスログ § FluentdやLogstashで転送し、Elasticsearchに入れてKibanaで見る o いわゆるELK,
EFK § 潜在的な問題や課題の確認、トラブル時の即時解析が可能に 20 サーバの構成 21 Elas8csearch Varnish LogServer LB WebServer S3 Kibana • 形式はLTSVを利用 § 必要なログはすべてとる time, client_ip, method, host, path, query, agent, taken_time, status, res_bytes など • 集約サーバでuser agentやclient ipをパース § ua-parser, woothee, geo_ip
2015/12 12 アクセスログ解析 • 秒間1万件超 • 1日約3億件 §
およそ1日120GB § 常時1週間分を保持 • Elasticsearchはr3.xlargeを6台で運用 § 合計メモリ180GB(ElasticsearchのHeapは72GB) § 月20万円前後 § スポットインスタンスを使えば月約3万円 § 24時間分のログ集計には10秒~1分程度かかる 22 Elasticsearchの構成 • レプリカを作らず、サーバ1台に1つずつシャードを配置 § 書き込み時間やディスク使用量を減らすため § 注:1シャード20GB程度あるので、さらに4分割ほどしたほうが良いかも 23
2015/12 13 アクセスログ解析でわかること • レスポンスに時間がかかっているページ § 遅いレスポンスが増加していないか §
改善すべき機能はどこか 24 アクセスログ解析でわかること • レスポンスのステータス § エラーやキャッシュミスが増えていないか 25
2015/12 14 アクセスログ解析でわかること • どの地域からアクセスが多いか § GEO IPを利用
26 アクセスログ解析でわかること • どのファイルが帯域を多く使ってるか § レスポンスサイズの合計をパスごとに表示 27
2015/12 15 アクセスログ解析でわかること(実例) • SVGファイルがgzipされていないことを発見。gzip対象に追加 § 1TB/月の削減 28
アクセスログ解析でわかること • バージョン更新時の状態確認 § エラー状況や、更新できていないサーバがないか確認できる 29
2015/12 16 アクセスログ解析でわかること • サーバ台数変更時の挙動 § サーバ毎のリクエストで、ちゃんとロードバランスできてるか確認 30
アクセスログ解析でわかること • 急にアクセスが増えたときの原因調査 § フィルタを替えて異状な 項目を探す § 該当のログをフィルタして 詳細に分析 31
2015/12 17 アクセスログ解析 • ES+Kibanaで改善した点 § エンジニア秘伝のタレ(shell芸)で見ていたログが、 URLや画像で即座に社内共有できるようになった
§ Kibana4で複数アグリゲーションが利用できるようになり 複雑な解析もできるようになった • ログ解析できる人: 2人→6人以上 • 確認にかかる時間:10分~1日以上→1分 § ブラウザ上で確認できるので、即対応できる § ただし調べられる項目が増えたことにより、時間短縮はできていない o Kibanaは使うと楽しいので、気づいたら時間が… 32 まとめ 33
2015/12 18 まとめ • Elasticsearchは日経社内で広く活用中! § 記事検索 o 新規アプリやプロトタイプで利用
§ アクセスログ可視化 o 一日3億件超のログを保存 § 検索ログ・行動ログ・スロークエリなどの分析 • 今後さらに利用範囲を拡大予定です § 既存の検索エンジン置き換え § SenseやTimelionも活用 34 最後に • 日経電子版ではエンジニアを募集しています! § ServerSide: Elasticsearch, Python § Frontend: JavaScript § NativeApp: iOS, Android •
[email protected]
35
2015/12 19 Note 36 Note 37
2015/12 20 ご清聴ありがとうございました 38 www.elas8c.co 39