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
1k
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
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
180
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
200
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
140
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
170
Webhook best practices for rock solid and resilient deployments
glaforge
2
300
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.8k
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
260
Why Organizations Fail: ノーベル経済学賞「国家はなぜ衰退するのか」から考えるアジャイル組織論
kawaguti
PRO
1
100
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.9k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
110
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
68
Rails Girls Zürich Keynote
gr2m
96
14k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
KATA
mclloyd
PRO
34
15k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
130
My Coaching Mixtape
mlcsv
0
48
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
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