Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Adding Context to Queries: The Story Behind Adobe’s API and UI

Elastic Co
February 18, 2016

Adding Context to Queries: The Story Behind Adobe’s API and UI

Adobe uses Elasticsearch to power its API & UI with realtime, high-traffic business queries involving user-specific values. Marko will share the past, current, and future Elasticsearch implementation plans at Adobe – which includes millions of indexes with user-specific documents of prepared responses.

Elastic Co

February 18, 2016
Tweet

More Decks by Elastic Co

Other Decks in Technology

Transcript

  1. 4

  2. 17 Before Elasticsearch • Query for all families for a

    given subscription • Find all it’s metadata from 3+ tables • Merge in the per font data • Add the user specific context on top • Return dataset Queries on Highly Normalized Tables
  3. name: "Acumin Pro",
 fonts: [{
 name: "Bold",
 licenses: {
 full:

    {
 available_for_web: true, available_for_desktop: true
 },
 trial: {
 available_for_web: true, available_for_desktop: false
 }
 }
 },
 {
 name: "Light",
 licenses: {
 full: {
 available_for_web: true, available_for_desktop: false
 },
 trial: {
 available_for_web: true, available_for_desktop: false
 }
 }
 }]
  4. Indexing Elasticsearch Data 26 Data is written to MySQL 1

    2 3 4 5 Job is kicked off in an after save hook to sync Elasticsearch Prepare the whole document for the given Record Bulk operation delete/ insert Change takes effect for users
  5. 27 Indexing Elasticsearch Data • MySQL is still the source

    of truth • Indexed data is 100% rebuildable • Rollout of new Fonts and changes to a font are delayed only by seconds • Migrations are easier since restructuring the entire doc means we simply reindex with a different index name
  6. 31 Summary • Elastic search powers Typekit’s API, Browse UI

    and various other admin operations • Use a combination of term filters, queries and custom scripting to achieve fast queries for API and UI • Data is written to Elasticsearch Asynchronously via an after save pipeline Complex business queries, small data, high throughput Questions? [email protected] @markoiskander