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
390
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
900
Confoo Montreal: Ingest node: enriching documents within Elasticsearch
elastic
16
880
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.4k
Other Decks in Technology
See All in Technology
アジャイルな開発チームでテスト戦略の話は誰がする? / Who Talks About Test Strategy?
ak1210
1
760
AIエージェント入門
minorun365
PRO
33
19k
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
1
130
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
3k
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
290
1行のコードから社会課題の解決へ: EMの探究、事業・技術・組織を紡ぐ実践知 / EM Conf 2025
9ma3r
12
4.5k
2025/3/1 公共交通オープンデータデイ2025
morohoshi
0
100
Introduction to OpenSearch Project - Search Engineering Tech Talk 2025 Winter
tkykenmt
2
170
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
4k
What's new in Go 1.24?
ciarana
1
110
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
230
E2Eテスト自動化入門
devops_vtj
1
110
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
380
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Gamification - CAS2011
davidbonilla
80
5.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Facilitating Awesome Meetings
lara
53
6.3k
Documentation Writing (for coders)
carmenintech
68
4.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
How to Ace a Technical Interview
jacobian
276
23k
Fireside Chat
paigeccino
35
3.2k
A designer walks into a library…
pauljervisheath
205
24k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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