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

Elasticsearch (RubyShift 2013)

Karel Minarik
September 28, 2013

Elasticsearch (RubyShift 2013)

General introduction to Elasticsearch at the RubyShift 2013 conference.

Download the source code for demos:

* http://git.io/hello-elasticsearch-ruby
* http://git.io/stackexchange-elasticsearch

Karel Minarik

September 28, 2013
Tweet

More Decks by Karel Minarik

Other Decks in Technology

Transcript

  1. Elasticsearch Flexible REST API & JSON documents; API driven configuration;

    scripting; index aliases; … Scalable Distributed; built for cloud; … Versatile Search; analytics; storage; alerting; text clustering; NLP … Open Open source; community; plugins; …
  2. Flat structure An index per model. "Common search" scenario. Cannot

    cross-search. users questions answers comments { "name" : "John", "location" : "..." } { "title" : "My First Question", "body" : "..." } { "title" : "My First Answer", "body" : "..." } { "body" : "Just a comment: ..." }
  3. Denormalized Cheap to query, expensive to update. { "title": "My

    first question", "body": "...", "user": { "name": "John", "location": "..." }, "comments": [ { "text": "Good question!", "user": { "name": "Robert", "location": "..." } } ] } questions answers
  4. Compromised denormalisation Some properties don't change (user_name). Some can either

    be "freezed" or we have to pay the price of the mass update (user_location). { "id" : "john", "name" : "John", "location" : "..." } myapp user question answer { "id" : 1, "title" : "My first question", "body" : "...", "user" : { "name" : "John", "location" : "..." }, "comments" : [ { "body" : "...", "user" : { ... } }, { "body" : "...", "user" : { ... } } ] } { "id" : 2, "title" : "My first answer", "parent_id" : 1, "user" : { "name" : "Robert", "location" : "..." }, "comments" : [ { "body" : "...", "user" : { ... } } ] } parent_id comment comment