$30 off During Our Annual Pro Sale. View Details »

ClassiでのElasticsearchの利用について

Nakamura shinichirou
December 10, 2018
3.9k

 ClassiでのElasticsearchの利用について

ClassiでどのようにAmazon Elasticsearch Serviceを利用しているのか、その紹介です。

Nakamura shinichirou

December 10, 2018
Tweet

Transcript

  1. Copyright © 2018 Classi Corp. All Rights Reserved.
    Classiでの
    Amazon Elasticsearch
    Serviceの活用
    Copyright © 2018 Classi Corp. All Rights Reserved.
    プロダクト部 中村真一郎

    View Slide

  2. Copyright © 2018 Classi Corp. All Rights Reserved.
    • 中村真一郎
    • twitter: s_nakamura, github: nakaearth
    • 株式会社ヒトメディアからClassiへ出向
    • 職歴
    • sIer: 8年
    • BtoCやBtoBのサービスやっている会社に10年近く
    • 現在は
    • Classiで、Railsエンジニアとして働いています
    1
    自己紹介

    View Slide

  3. Copyright © 2018 Classi Corp. All Rights Reserved.
    • ClassiでElasticsearchをどう使っているのか
    • 運用している時に出てきた問題、課題など
    a. コンテンツボックス検索機能
    b. 校内グループ
    • その他
    2
    目次

    View Slide

  4. Copyright © 2018 Classi Corp. All Rights Reserved.
    • 現在Amazon Elasticsearch Serviceを使っているのは以下の機能
    • テスト、問題、アンケート等の検索機能(コンテンツボックス)
    • 先生/生徒がメッセージをやり取りする機能(校内グループ)
    • その他様々なデータの検索
    • この中の最初の二つについて話します
    3
    ClassiでElasticsearchをどう使っているのか

    View Slide

  5. Copyright © 2018 Classi Corp. All Rights Reserved.
    コンテンツボックス
    • これはもともとMysqlのmroongaストレージエンジンを使って作られて
    いたがパフォーマンス悪化のためElasticsearchに変更して改善を試
    みた
    • 何故変更したかというと、そもそもデータ構造がmroongaに適し
    てなかった
    • 階層構造のデータ
    • データの属性(科目だったり難易度だったり)が検索対象1に対してN。
    • ElasticsearchはDocument指向DBでjson形式のデータを登録。
    • json形式のデータを検索できるので、階層構造になっていても大丈
    夫。
    • AWSにはAmazon Elasticsearch Serviceがある。
    → Elasticsearchに変更することに。
    4
    ClassiでElasticsearchをどう使っているのか

    View Slide

  6. Copyright © 2018 Classi Corp. All Rights Reserved.
    コンテンツボックス
    • 作り直した結果どうなったか・・・。
    • レスポンスが10秒以上掛かっていたものが1~2秒まで短縮でき
    た・・。
    • テストも結構細かく追加した。
    • まずは機能として使えないという危機は脱した
    で、リプレースしてから月日が流れ、新たな課題が・・・。
    5
    ClassiでElasticsearchをどう使っているのか

    View Slide

  7. Copyright © 2018 Classi Corp. All Rights Reserved.
    コンテンツボックス
    • 運用して感じた課題、それは「 バージョンアップ」
    • 既に6系が出ているElasticsearch。で今使っているのは・・・・・
    2.3!!!!!!!
    6
    運用している時に出てきた問題、課題など

    View Slide

  8. Copyright © 2018 Classi Corp. All Rights Reserved.
    コンテンツボックス
    • 随分差があるように見えるが・・・
    • Elasticsearchは2系の次は5系。だからそこまで古くはない・・・・とは
    言えない・・・。
    • やっぱり古い・・・。
    • アップデートしないとダメ
    • どうやるか・・・。
    • reindex apiはまだ使えない
    • バックアップデータのrestoreだと差分がでる
    7
    運用している時に出てきた問題、課題など

    View Slide

  9. Copyright © 2018 Classi Corp. All Rights Reserved.
    コンテンツボックス
    • Elasticsearchのバージョンを上げて新規にindexを作成して、そこに
    対し既存のデータをimport。
    • データimport中も並行して新規データも入れるようにする
    • 割と泥臭いかもしれないけど、この方式が無難
    8
    運用している時に出てきた問題、課題など
    ver2.3でindex
    ver5でindex作成
    APP

    View Slide

  10. Copyright © 2018 Classi Corp. All Rights Reserved.
    校内グループ
    • バージョン5系
    • 当初、学校毎にindexを作成。
    • 学校毎にデータが別れている。
    • messageとcommentが1対多の構造。それを一つのJSONで表して登
    録。
    • 本文に対してキーワード検索を行う
    9
    ClassiでElasticsearchをどう使っているのか

    View Slide

  11. Copyright © 2018 Classi Corp. All Rights Reserved.
    校内グループ
    • 学校数が多くなりindexの数は〜千以上に。
    • index作成ができない状態に・・・・。
    • master nodeを置いてないとindexの作成やindexの更新が検索側に
    影響する
    • 結局master nodeを追加し、index数も抑えた形で作り直してリリース
    10
    ClassiでElasticsearchをどう使っているのか

    View Slide

  12. Copyright © 2018 Classi Corp. All Rights Reserved.
    校内グループ
    • index数は〜十個。学校を各Indexに適宜分散させる
    • master nodeを3つ(推奨)にし、データnodeを2つ
    • 安定した。
    11
    ClassiでElasticsearchをどう使っているのか

    View Slide

  13. Copyright © 2018 Classi Corp. All Rights Reserved.
    校内グループ
    • 今は6系が出てます。→バージョンアップしないと!!
    • 最近AWSからAmazon Elasticsearch Serviceのupdateに関して使えそ
    うな機能がリリース!!
    12
    ClassiでElasticsearchをどう使っているのか

    View Slide

  14. Copyright © 2018 Classi Corp. All Rights Reserved.
    校内グループ
    • 5系から使える機能。
    • ドメインのアップグレードから今のバージョンから次のバージョンに
    アップグレードすることができる(ノーメンテで)
    13
    ClassiでElasticsearchをどう使っているのか

    View Slide

  15. Copyright © 2018 Classi Corp. All Rights Reserved.
    校内グループ
    • 「アップグレードの適格性の確認」を実行するとアップグレードがこ
    のままできるかの確認ができる。
    • 結果は「アップグレード履歴」から確認できる
    14
    ClassiでElasticsearchをどう使っているのか

    View Slide

  16. Copyright © 2018 Classi Corp. All Rights Reserved.
    校内グループ
    • 5系から使える機能なので、2系から5系へは今までのように運用側
    で工夫してやるしかないが、幸い5系を使っているのでこの機能につ
    いてはAWSのこの機能が使えるかも
    • まだテスト環境でしか試してない。本番適用は近日中の予定。
    15
    ClassiでElasticsearchをどう使っているのか

    View Slide

  17. Copyright © 2018 Classi Corp. All Rights Reserved.
    その他
    • バージョンアップの追従が早くなった。
    → 使える機能は限られている
    マシンラーニングなど使えない機能が結構ある。
    →運用コストは抑えられる。
    • バックアップ。自由にやりたいなら自前でスクリプト書いてやる。
    • kibanaを使って中身を見ることはできる
    16
    ClassiでElasticsearchをどう使っているのか

    View Slide

  18. Copyright © 2018 Classi Corp. All Rights Reserved.
    以上です。ご静聴ありがとうございます!
    17

    View Slide