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
860
Confoo Montreal: Ingest node: enriching documents within Elasticsearch
elastic
16
840
Elastic{ON} 2018 - Sipping from the Firehose: Scalable Endpoint Data for Incident Response
elastic
6
4.2k
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.7k
Elastic{ON} 2018 - Bigger, Faster, Stronger - Leveling Up Enterprise Logging
elastic
1
5k
Elastic{ON} 2018: Latest in Logstash
elastic
1
4.5k
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
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.6k
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
Terraform Stacks入門 #HashiTalks
msato
0
350
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
9
970
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
110
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
590
Featured
See All Featured
Thoughts on Productivity
jonyablonski
67
4.3k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Speed Design
sergeychernyshev
25
620
Practical Orchestrator
shlominoach
186
10k
Unsuck your backbone
ammeep
668
57k
BBQ
matthewcrist
85
9.3k
Agile that works and the tools we love
rasmusluckow
327
21k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Bash Introduction
62gerente
608
210k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
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