Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Elastic{ON} 2017 1日目 | General Mills のElasticsearchを使ったWebサイト検索の工夫! #elasticon

Elastic{ON}2017 レポートのまとめはこちら!!

こんばんは!PlNOKlOです!
サンフランシスコは夜中でございます!!


本日参加したセッションについてご説明したいと思います!

参加セッション

  1. Opening Keynote
  2. Near Real Time Retail Analytics @ Walmart
  3. Elastic @ General Mills: The Journey Continues
  4. Streamlining Healthcare and Research: The Story of Elasticsearch at UCLA Health
  5. Welcome Reception


いやー、キーノートすごかったですね!
同僚がそこは詳しくブログを書いているので割愛しますが、
Kibana大好きな私は興奮しっぱなしでした!!

ぜひこちらのブログもご覧ください😊


本日はキーノート以外にはUse Caseをたくさん聞いてきました。

Walmartはアメリカの世界最大のスーパーマーケットで、
売上額でも世界最大の企業です。
General Millsは食品の加工 / 販売をしている会社で、
子会社にハーゲンダッツなど有名な企業を80ほど持つ、大手企業です。

食品業界、流通業界に関連する分野でのElasticsearchの活躍範囲を聞けたのは大きかったですね!!


それでは私はGeneral Millsの事例をご紹介します!

f:id:acro-engineer:20170308090731j:plain:w700

General Millsは昨年のElastic{ON} シカゴでも発表していて、
その発表では精度の高いサイト内検索をするために
EndecaからElasticsearchへの置き換えを行った内容が紹介されていました。

https://www.elastic.co/elasticon/tour/2016/chicago/the-trix-to-creating-a-totally-new-customer-experience-elastic-at-general-mills
こちらが昨年の発表内容です。

ちなみにEndecaというのは、「Oracle Endeca Information Discovery」のことであり、
構造化データと非構造化データの紐づけを簡単に実現し、DBの構造設計が不要、
検索中心の操作感で誰でもすぐに利用可能な「ビジネスアナリスト」向けの製品です。


こちらをElasticsearchに置き換え、
以下のサイトの検索を行いたいと紹介されていました。

http://www.bettycrocker.com/
https://www.pillsbury.com/
http://tabelspoon.com/

f:id:acro-engineer:20170308173256j:plain:w700

今年の発表では、Webサイト内の複雑なデータの検索を行うために、
データの持ち方に工夫をしたようで、
それをデモも交えて紹介していました。

まず構成としては、
5データノード、2クライアントノード、3マスターノードでクラスタを組み、
1秒あたり350レコードを取得しながら、約3500個のシャード検索をしています。


f:id:acro-engineer:20170308173301j:plain:w700

そして、Simple Search DTOを間に挟むことで検索の実装を行っています。


f:id:acro-engineer:20170308173309j:plain:w700

General Millsのサイトを検索するには、
レシピ、記事、ビデオ、製品、クーポンなど、
多種にわたるデータを検索できるようにしなくてはなりません。

そこでGeneral Millsが行ったのは
商品カテゴリや、商品までさまざまな要素を対等なドキュメントとして扱う、
シンプルに検索する仕組みだそうです。

発表で説明されていたのは、
ItemID、Title、Metadataを共通のフィールドにしていました。

ItemIDは要素を判別するためのIDで、
Titleは検索するために最も必要な要素、
Metadataは固有の情報を格納するための要素です。


f:id:acro-engineer:20170308173308j:plain:w700

Metadataは
 ・Label:カテゴリ
 ・Value:サブカテゴリ
 ・Groupes:LabelとValueを論理的にグループ化する要素
 ・Parent-child groups:Groupの階層構造を持つ要素
を保持しています。

そうすることで検索の際、
Metadataを検索すればよいことになります。


f:id:acro-engineer:20170308173311j:plain:w700

そしてここで出てくるのは、
ドキュメントベースから情報ベースの考え方です。

一つのDocumentがたくさんのフィールドを持つという
Documentベースで考えではありません。

Documentを汎用的な型のように考え、
商品カテゴリ、商品、タイムスタンプをそれぞれ
1Documentとして表す、というものです。

各Documentは
 ・ItemID(Guid)
 ・Title(string)
 ・Values(List)
 ・Attachments(List)
を保持しており、ValuesやAttachmentsに
各ItemIDを入れて、商品カテゴリ-商品-タイムスタンプなどの
関連づけをおこなっています。


このようなデータの管理をすることで、
サイト内でItemID検索をすると、
そのItemIDを持った商品と、それを子(Attachments)に持つ商品カテゴリ
の両方のドキュメントが取得できるのです。

そうすることで多種多様なデータでも、等しいドキュメントとして検索が可能になったのです。


ただ、同じドキュメントでも構造が変わるので、
データの入れ方、取り出し方などが難しいと思いますよね?
そこで、自前で出し入れするメソッドを実装し、
それを利用してデータの管理を簡単に行っているそうです。


f:id:acro-engineer:20170308174343j:plain:w700
f:id:acro-engineer:20170308174401j:plain:w700


実はどういうコーディングもしているか紹介してくれていて、
これがその紹介Demoになります。


私も営業でお客様とお話しすると、
自社Webサイトの検索をElasticsearchでしたいと相談をしてくださる方が多いです。
そういった方々には少しヒントになるのではないでしょうか?

ということで、General Millsの紹介でした!



General Millsの発表はDemoの解説が多く、
技術者には楽しい内容という感じでした。

私は営業なので、かなり技術的に詳しい話になると、
情報の処理が追い付かなくなり大変でした😭


かなりの集中力を使って疲れ切ってしまったので、
明日に備えて寝ることにします😅


明日は以下のセッションを聞いてきます!

  1. What's the Latest in Logstash?
  2. What's X?citing in X?Pack?
  3. Strengthen your SIEM: Using Logstash to Connect ArcSight to the Elastic Stack
  4. Browse Raw Logs in One Place: Open Source Plug-in for Kibana
  5. 'Elasticsearch as a Service' in eBay
  6. Ballerina
  7. Elastic{ON} Party


この中から面白かったものを明日もあげるので、
お楽しみにしてください!!


"Please enjoy using Elasticsearch !"


Elastic{ON}2017 レポートのまとめはこちら!!

Acroquest Technologyでは、キャリア採用を行っています。

  • ビッグデータHadoop/Spark、NoSQL)、データ分析(Elasticsearch、Python関連)、Web開発(SpringCloud/SpringBoot、AngularJS)といった最新のOSSを利用する開発プロジェクトに関わりたい。
  • マイクロサービスDevOpsなどの技術を使ったり、データ分析機械学習などのスキルを活かしたい。
  • 社会貢献性の高いプロジェクトや、顧客の価値を創造するようなプロジェクトで、提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や、対外的な勉強会の開催・参加を通した技術の発信、社内勉強会での技術情報共有により、エンジニアとして成長したい。

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

Elasticsearchを仕事で使いこみたいデータ分析エンジニア募集中! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com