SlideShare uma empresa Scribd logo
1 de 64
Baixar para ler offline
99 Problems, But
The Search Ain’t One
Andrei Zmievski • ConFoo •!Mar 9, 2011
who am i?
 curl http://localhost:9200/speaker/info/andrei


{“name”:       “Andrei Zmievski”,
 “works”:      “Analog Co-op”,
 “projects”:   [“PHP”, “PHP-GTK”, “Smarty”, “Unicode/i18n”],
 “likes”:      [“coding”, “beer”, “brewing”, “photography”],
 “twitter”:    “@a”,
 “email”:      “andrei@zmievski.org”}
what is elasticsearch?

a search engine for the NoSQL generation

  domain-driven

  distributed

  RESTful

  Hitchhiker’s Guide to the Galaxy (no, really)
document model


document-oriented

JSON-based

schema-free
engine


based on Lucene

multi-tenancy

distributed, out of the box
3 easy steps
1. index
           !"#$%&'()*+%,--./00$1!2$,13-/45660!17803.92:9#0;%&<=
           >
request




           %%%%?72@9?/%?A7<#9B%C@B9D3:B?E
           %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7==-%)79?E
           %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE
           %%%%?-KB--9#?/%?2?E
           %%%%?,9BH,-?/%;LM
           N=


           >
response




           %%%%?1:?/-#"9
           %%%%?OB7<9P?/?!178?
           %%%%?O-I.9?/?3.92:9#?
           %%%%?OB<?/?;?
           N
2. search
request



           !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99#


           >%?-11:?%/%TE
           %%?O3,2#<3?%/%>
           %%%%?-1-2$?%/%;E
           %%%%?3"!!9338"$?%/%;E
           %%%%?82B$9<?%/%6
           %%NE
           %%?,B-3?%/%>
           %%%%?-1-2$?%/%;E
response




           %%%%?@2PO3!1#9?%/%6UV46LM64E
           %%%%?,B-3?%/%G%>
           %%%%%%?OB7<9P?%/%?!178?E
           %%%%%%?O-I.9?%/%?3.92:9#?E
           %%%%%%?OB<?%/%?;?E
           %%%%%%?O3!1#9?%/%6UV46LM64E
           %%%%%%?O31"#!9?%/%
           >
           %%%%?72@9?/%?A7<#9B%C@B9D3:B?E
           %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E
           %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE
           %%%%?-KB--9#?/%?2?E
           %%%%?,9BH,-?/%;LM
           N%N%J%N%N
2. search
request



           !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99#


           >%?-11:?%/%TE
           %%?O3,2#<3?%/%>
           %%%%?-1-2$?%/%;E
           %%%%?3"!!9338"$?%/%;E
           %%%%?82B$9<?%/%6
           %%NE                                total number of hits
           %%?,B-3?%/%>
           !!!!"#$#%&"!'!()
response




           %%%%?@2PO3!1#9?%/%6UV46LM64E
           %%%%?,B-3?%/%G%>
           %%%%%%?OB7<9P?%/%?!178?E
           %%%%%%?O-I.9?%/%?3.92:9#?E
           %%%%%%?OB<?%/%?;?E
           %%%%%%?O3!1#9?%/%6UV46LM64E
           %%%%%%?O31"#!9?%/%
           >
           %%%%?72@9?/%?A7<#9B%C@B9D3:B?E
           %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E
           %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE
           %%%%?-KB--9#?/%?2?E
           %%%%?,9BH,-?/%;LM
           N%N%J%N%N
2. search
request



           !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99#


           >%?-11:?%/%TE
           %%?O3,2#<3?%/%>
           %%%%?-1-2$?%/%;E
           %%%%?3"!!9338"$?%/%;E
           %%%%?82B$9<?%/%6
           %%NE
           %%?,B-3?%/%>
           %%%%?-1-2$?%/%;E
                                                       the index of the doc
response




           %%%%?@2PO3!1#9?%/%6UV46LM64E
           %%%%?,B-3?%/%G%>
           !!!!!!"*+,-./"!'!"0$,1")
           %%%%%%?O-I.9?%/%?3.92:9#?E
           %%%%%%?OB<?%/%?;?E
           %%%%%%?O3!1#9?%/%6UV46LM64E
           %%%%%%?O31"#!9?%/%
           >
           %%%%?72@9?/%?A7<#9B%C@B9D3:B?E
           %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E
           %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE
           %%%%?-KB--9#?/%?2?E
           %%%%?,9BH,-?/%;LM
           N%N%J%N%N
2. search
request



           !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99#


           >%?-11:?%/%TE
           %%?O3,2#<3?%/%>
           %%%%?-1-2$?%/%;E
           %%%%?3"!!9338"$?%/%;E
           %%%%?82B$9<?%/%6
           %%NE
           %%?,B-3?%/%>
           %%%%?-1-2$?%/%;E
response




           %%%%?@2PO3!1#9?%/%6UV46LM64E
           %%%%?,B-3?%/%G%>                              the type of the doc
           %%%%%%?OB7<9P?%/%?!178?E
           !!!!!!"*#23."!'!"43.%5.6")
           %%%%%%?OB<?%/%?;?E
           %%%%%%?O3!1#9?%/%6UV46LM64E
           %%%%%%?O31"#!9?%/%
           >
           %%%%?72@9?/%?A7<#9B%C@B9D3:B?E
           %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E
           %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE
           %%%%?-KB--9#?/%?2?E
           %%%%?,9BH,-?/%;LM
           N%N%J%N%N
2. search
request



           !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99#


           >%?-11:?%/%TE
           %%?O3,2#<3?%/%>
           %%%%?-1-2$?%/%;E
           %%%%?3"!!9338"$?%/%;E
           %%%%?82B$9<?%/%6
           %%NE
           %%?,B-3?%/%>
           %%%%?-1-2$?%/%;E
response




           %%%%?@2PO3!1#9?%/%6UV46LM64E
           %%%%?,B-3?%/%G%>
           %%%%%%?OB7<9P?%/%?!178?E
           %%%%%%?O-I.9?%/%?3.92:9#?E
           !!!!!!"*+-"!'!"(")                             the id of the doc
           %%%%%%?O3!1#9?%/%6UV46LM64E
           %%%%%%?O31"#!9?%/%
           >
           %%%%?72@9?/%?A7<#9B%C@B9D3:B?E
           %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E
           %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE
           %%%%?-KB--9#?/%?2?E
           %%%%?,9BH,-?/%;LM
           N%N%J%N%N
2. search
request



           !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99#


           >%?-11:?%/%TE
           %%?O3,2#<3?%/%>
           %%%%?-1-2$?%/%;E
           %%%%?3"!!9338"$?%/%;E
           %%%%?82B$9<?%/%6
           %%NE
           %%?,B-3?%/%>
           %%%%?-1-2$?%/%;E
response




           %%%%?@2PO3!1#9?%/%6UV46LM64E
           %%%%?,B-3?%/%G%>
           %%%%%%?OB7<9P?%/%?!178?E
           %%%%%%?O-I.9?%/%?3.92:9#?E
           !!!!!!"*+-"!'!"(")
           %%%%%%?O3!1#9?%/%6UV46LM64E                            the hit score
           %%%%%%?O31"#!9?%/%
           >
           %%%%?72@9?/%?A7<#9B%C@B9D3:B?E
           %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E
           %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE
           %%%%?-KB--9#?/%?2?E
           %%%%?,9BH,-?/%;LM
           N%N%J%N%N
2. search
request



           !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99#


           >%?-11:?%/%TE
           %%?O3,2#<3?%/%>
           %%%%?-1-2$?%/%;E
           %%%%?3"!!9338"$?%/%;E
           %%%%?82B$9<?%/%6
           %%NE
           %%?,B-3?%/%>
           %%%%?-1-2$?%/%;E
response




           %%%%?@2PO3!1#9?%/%6UV46LM64E
           %%%%?,B-3?%/%G%>
           %%%%%%?OB7<9P?%/%?!178?E
           %%%%%%?O-I.9?%/%?3.92:9#?E
           !!!!!!"*+-"!'!"(")
           %%%%%%?O3!1#9?%/%6UV46LM64E
           %%%%%%?O31"#!9?%/%
                                                              the original doc contents
           7
           !!!!",%8."'!"9,-6.+!:8+.;45+")
           !!!!"#%&5"'!"<<!=6$>&.84)!>?#!#@.!A.%60@!9+,B#!C,.")
           !!!!"&+5.4"'!D"0$-+,E")!">..6")!"3@$#$E6%3@2"F)
           !!!!"#G+##.6"'!"%")
           !!!!"@.+E@#"'!(HI
           J%N%J%N%N
2. search
request



           !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99#


           >%"#$$5"!'!K)
           %%?O3,2#<3?%/%>
           %%%%?-1-2$?%/%;E                             the execution time
           %%%%?3"!!9338"$?%/%;E
           %%%%?82B$9<?%/%6
           %%NE
           %%?,B-3?%/%>
           %%%%?-1-2$?%/%;E
response




           %%%%?@2PO3!1#9?%/%6UV46LM64E
           %%%%?,B-3?%/%G%>
           %%%%%%?OB7<9P?%/%?!178?E
           %%%%%%?O-I.9?%/%?3.92:9#?E
           %%%%%%?OB<?%/%?;?E
           %%%%%%?O3!1#9?%/%6UV46LM64E
           %%%%%%?O31"#!9?%/%
           >
           %%%%?72@9?/%?A7<#9B%C@B9D3:B?E
           %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E
           %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE
           %%%%?-KB--9#?/%?2?E
           %%%%?,9BH,-?/%;LM
           N%N%J%N%N
3. profit


that’s up to you
demo
distributed model


provides:

  performance

  resiliency (high-availability)
shards
a portion of the document space

each one is a separate Lucene index

  thus, many per-index settings are available

document is sharded by its _id value

  but can be assigned (routed) to a shard
  deterministically
zero-conf discovery


zen (multicast and unicast)

cloud (EC2 via API)
auto-routing

master node:

  maintains cluster state

  reassigns shards if nodes leave/join cluster

any node can process the search request

the query is handled via scatter-gather mechanism
replicas

each shard can have 1 or more replicas

# of replicas can be updated dynamically after
index creation

replicas can be used for querying in parallel
shard allocation
               node 1




       start with a single node
shard allocation
                node 1
                 person1
                 person2




      PUT /person {
         “index”: {
            “number_of_shards”: 2,
            “number_of_replicas”: 1
      }}
shard allocation
       node 1          node 2
       person1         person1
       person2         person2




        start the second node
shard allocation
node 1    node 2         node 3   node 4
person1   person1
person2   person2




            start 2 more nodes
shard allocation
node 1    node 2         node 3    node 4
person1                  person1
          person2                  person2




            start 2 more nodes
document sharding
node 1    node 2         node 3     node 4
person1                   person1
          person2                   person2




            PUT /person/info/1
            {…}
document sharding
     node 1         node 2         node 3     node 4
     person1                        person1
                    person2                   person2




                      PUT /person/info/1
hashed to shard 1     {…}
document sharding
node 1    node 2         node 3      node 4
person1                   person1
          person2                    person2




                        replicated

            PUT /person/info/1
            {…}
document sharding
node 1    node 2         node 3     node 4
person1                   person1
          person2                   person2




            PUT /person/info/2
            {…}
document sharding
node 1         node 2            node 3     node 4
person1                           person1
               person2                      person2




hashed to shard 2
                    PUT /person/info/2
                    {…}
document sharding
node 1    node 2         node 3      node 4
person1                   person1
          person2                    person2




                                    replicated

            PUT /person/info/2
            {…}
scatter-gather
node 1          node 2        node 3          node 4
person1                        person1
                person2                       person2




          GET /person/_search?q=name:thomas
shard allocation
node 1          node 2        node 3          node 4
person1                        person1
                person2                       person2




          GET /person/_search?q=name:thomas
shard allocation
node 1          node 2        node 3          node 4
person1                        person1
                person2                       person2




          GET /person/_search?q=name:thomas
shard allocation
node 1          node 2        node 3          node 4
person1                        person1
                person2                       person2




          GET /person/_search?q=name:thomas
demo
transactional model

per-document consistency

no need to commit/flush

uses write-ahead transaction log

write consistency (W) can be controlled

  one, quorum, or all
(near) real-time search


1 second refresh rate by default

_refresh API also
index storage

node data considered transient

can be stored in local file system, JVM heap,
native OS memory, or FS & memory combination

persistent storage requires a gateway
gateways
persistent store for cluster state and indices

asynchronous, translog-based write strategy

allows full recovery if a cluster restart is needed

supported gateways:
  local
  shared FS
  Hadoop via HDFS
  S3
mapping
describes document structure to the search
engine

automatically created with sensible defaults

explicit mapping can be provided (generally, a
good idea)

can run into merge conflicts
mapping

important meta fields:

  _source

  _all

there are more
mapping types

simple:

  string, integer/long, float/double, boolean, and
  null)

complex:

  array, object
sample mapping
document



           >?"39#?/%%%%%%?<9#B!:?E
           %?-B-$9?/%%%%%?W17X-%(27B!?E
           %?-2H3?/%%%%%%G?.#18B$B7H?E%?<9F"HHB7H?E%?.,.?JE
           %?.13-W2-9?/%%?56;6&;5&55+;M/;Y/;5?E
           %?.#B1#B-I?/%%5N



           >?.13-?/%>
           %%?.#1.9#-B93?%/%>
mapping




           %%%%?"39#?/%%%%%%>?-I.9?/%?3-#B7H?E%?B7<9P?/%?71-O272$IZ9<?NE
           %%%%?@9332H9?/%%%>?-I.9?/%?3-#B7H?E%[F113-/%;UVNE
           %%%%?-2H3?/%%%%%%>?-I.9?/%?3-#B7H?E%?B7!$"<9OB7O2$$?/%?71?NE
           %%%%?.13-W2-9?%/%>?-I.9?%/%?<2-9?E%[3-1#9/%[71NE
           %%%%?.#B1#B-I?%/%>?-I.9?%/%?B7-9H9#?N
           NNN
analyzers
break down (tokenize) and normalize fields during
indexing and query strings at search time

analyzer = tokenizer + token filters (0 or more)
*-27<2#<%A72$IZ9#%S
%%%*-27<2#<%+1:97BZ9#%]
%%%%%%%*-27<2#<%+1:97%^B$-9#%]
%%%%%%%_1K9#!239%+1:97%^B$-9#%]
%%%%%%%*-1.%+1:97%^B$-9#
analyzers
                            analyzers, tokenizers, and filters can be
                            customized
mapping elasticsearch.yml




                            B7<9P/
                            %%272$I3B3/
                            %%%%272$IZ9#/
                            %%%%%%.?&%,E/
                            %%%%%%%%-I.9/%!"3-1@
                            %%%%%%%%-1:97BZ9#/%3-27<2#<
                            %%%%%%%%8B$-9#/%G3-27<2#<E%$1K9#!239E%3-1.E
                            %%%%%%%%%%%%%%%%%23!BB81$<B7HE%.1#-9#*-9@J


                            `
                            ?-B-$9?/%>?-I.9?/%?3-#B7H?E%?272$IZ9#?/%?9"$27H?NE
                            `
API
API conventions


append ?pretty=true to get readable JSON

boolean values: false/0/off = false, rest is true

JSONP support via callback parameter
API structure

http://host:port/[index]/[type]/[_action/id]

 GET http://es:9200/_status

 GET http://es:9200/twitter/_status

 POST http://es:9200/twitter/tweet/1

 GET http://es:9200/twitter/tweet/1
API structure
http://host:port/[index]/[type]/[_action/id]

 GET http://es:9200/twitter/tweet/_search

 GET http://es:9200/twitter/user/_search

 GET http://es:9200/twitter/tweet,user/_search

 GET http://es:9200/twitter,facebook/_search

 GET http://es:9200/_search
API query example
>
%%%%?R"9#I?/%>
%%%%%%%%?8B$-9#9<?/%>
%%%%%%%%%%%%?R"9#I?/%>
%%%%%%%%%%%%%%%%?R"9#IO3-#B7H?/%>
%%%%%%%%%%%%%%%%%%%%?R"9#I?/%?811%F2#?E
%%%%%%%%%%%%%%%%%%%%?<982"$-O1.9#2-1#?/%?AaW?E
%%%%%%%%%%%%%%%%%%%%?8B9$<3?/%G?-B-$9?E%?<93!#B.-B17?JE
%%%%%%%%%%%%%%%%%%%%?F113-?/%5U6
%%%%%%%%%%%%%%%%N
%%%%%%%%%%%%NE
%%%%%%%%%%%%?8B$-9#?/%>
%%%%%%%%%%%%%%%%?#27H9?/%>?<2-9?/%>?H-?/%?56;;&6T&64?NN
%%%%%%%%%%%%N
%%%%%%%%N
%%%%NE
%%%%?8#1@/%;6E
%%%%?3BZ9?/%;6
N
API {core}
index             search

bulk               query

delete             from/size paging

delete by query    sort

get                highlighting

count              selective fields
API {indices}
create           optimize

delete           snapshot

open/close       update settings

get/put/delete   analyze
mapping
                 status
refresh
                 flush
Query DSL
term / terms   query_string

range            default_operator

prefix            analyzer

bool             phrase_slop

fuzzy            etc

wildcard
filters


share some similar features with queries (term,
range, etc)

why use a filter?
filters
faster than queries

cached (depends on the filter)

  the cache is used for different queries against
  the same filter

no scoring

more useful ones: term, terms, range, prefix, and,
or, not, exists, missing, query
facets

provide aggregated data based on the search
request

terms, histogram, date histogram, range,
statistical, and more
geo search

implemented as filters (and a facet)
  geo_distance

  geo_bounding_box

  geo_polygon
interfaces

REST

Java /!Groovy

Language clients (REST/Thrift):

  pyes, PHP (standalone and symfony), Ruby, Perl

Flume sink implementation
data import

ES is not the primary data store (usually)

to import/synchronize data:

  write an agent (Gearman, message queues, etc)

  use rivers (CouchDB, RabbitMQ, Twitter)
10 more features
versioning          load balancing nodes

index aliases       plugins

parent/child docs   more_like_this

scripting           multi_field mapping

dynamic mapping     percolation
templates
References
http://github.com/elasticsearch/elasticsearch

http://groups.google.com/a/elasticsearch.com/
group/users/

IRC: #elasticsearch on irc.freenode.net

twitter: @elasticsearch

Mais conteúdo relacionado

Mais procurados

Os Ellistutorial
Os EllistutorialOs Ellistutorial
Os Ellistutorialoscon2007
 
Breithaupt keynote flexigas symposium 22 june 2011
Breithaupt keynote flexigas symposium 22 june 2011Breithaupt keynote flexigas symposium 22 june 2011
Breithaupt keynote flexigas symposium 22 june 2011Peter Breithaupt
 
Beca Emakunde 2012 - La "ingeniería emocional inter géneros" en las series co...
Beca Emakunde 2012 - La "ingeniería emocional inter géneros" en las series co...Beca Emakunde 2012 - La "ingeniería emocional inter géneros" en las series co...
Beca Emakunde 2012 - La "ingeniería emocional inter géneros" en las series co...Irekia - EJGV
 
O ritual do santuário
O ritual do santuárioO ritual do santuário
O ritual do santuárioOsvair Munhoz
 
0097 introduccion-a-redes-y-a-tcpip-sobre-tecnologia-ethernet
0097 introduccion-a-redes-y-a-tcpip-sobre-tecnologia-ethernet0097 introduccion-a-redes-y-a-tcpip-sobre-tecnologia-ethernet
0097 introduccion-a-redes-y-a-tcpip-sobre-tecnologia-ethernetEdgar lamar
 
Helio (TSX-V:HRC) January 2014 Presentation
Helio (TSX-V:HRC) January 2014 PresentationHelio (TSX-V:HRC) January 2014 Presentation
Helio (TSX-V:HRC) January 2014 PresentationIDorsman
 
Tu plan de comunicación en internet, paso a paso
Tu plan de comunicación en internet, paso a pasoTu plan de comunicación en internet, paso a paso
Tu plan de comunicación en internet, paso a pasoSantiago Guillen
 
Whats next-in-events-free-ebook
Whats next-in-events-free-ebookWhats next-in-events-free-ebook
Whats next-in-events-free-ebookDavid Adler
 
Master_thesis_-_Sustainable_psychology-_Stress-Overconsumption-Climate_change...
Master_thesis_-_Sustainable_psychology-_Stress-Overconsumption-Climate_change...Master_thesis_-_Sustainable_psychology-_Stress-Overconsumption-Climate_change...
Master_thesis_-_Sustainable_psychology-_Stress-Overconsumption-Climate_change...Annika Tibblin
 
Презентуем Технологические Проекты #hsesun
Презентуем Технологические Проекты #hsesunПрезентуем Технологические Проекты #hsesun
Презентуем Технологические Проекты #hsesunGleb Kaplun
 
Cifrado en Flujo y Bloque con Clave Secreta
Cifrado en Flujo y Bloque con Clave SecretaCifrado en Flujo y Bloque con Clave Secreta
Cifrado en Flujo y Bloque con Clave SecretaSamary Páez
 
Moss Jacosbon Ems Pla 182 Final Submission 12 15 08
Moss Jacosbon   Ems Pla 182 Final Submission 12 15 08Moss Jacosbon   Ems Pla 182 Final Submission 12 15 08
Moss Jacosbon Ems Pla 182 Final Submission 12 15 08mossbmw
 
Ethicability for Organisations Today and into the Future
Ethicability for Organisations Today and into the FutureEthicability for Organisations Today and into the Future
Ethicability for Organisations Today and into the FutureChartered Management Institute
 
Canaima Presentacion
Canaima PresentacionCanaima Presentacion
Canaima PresentacionMaria Tobon
 

Mais procurados (19)

Os Ellistutorial
Os EllistutorialOs Ellistutorial
Os Ellistutorial
 
How oracle 12c flexes its muscles against oracle 11g r2
How oracle 12c flexes its muscles against oracle 11g r2How oracle 12c flexes its muscles against oracle 11g r2
How oracle 12c flexes its muscles against oracle 11g r2
 
Breithaupt keynote flexigas symposium 22 june 2011
Breithaupt keynote flexigas symposium 22 june 2011Breithaupt keynote flexigas symposium 22 june 2011
Breithaupt keynote flexigas symposium 22 june 2011
 
Beca Emakunde 2012 - La "ingeniería emocional inter géneros" en las series co...
Beca Emakunde 2012 - La "ingeniería emocional inter géneros" en las series co...Beca Emakunde 2012 - La "ingeniería emocional inter géneros" en las series co...
Beca Emakunde 2012 - La "ingeniería emocional inter géneros" en las series co...
 
O ritual do santuário
O ritual do santuárioO ritual do santuário
O ritual do santuário
 
Mastering Enterprise Risk Management Inside Your Organization
Mastering Enterprise Risk Management Inside Your OrganizationMastering Enterprise Risk Management Inside Your Organization
Mastering Enterprise Risk Management Inside Your Organization
 
0097 introduccion-a-redes-y-a-tcpip-sobre-tecnologia-ethernet
0097 introduccion-a-redes-y-a-tcpip-sobre-tecnologia-ethernet0097 introduccion-a-redes-y-a-tcpip-sobre-tecnologia-ethernet
0097 introduccion-a-redes-y-a-tcpip-sobre-tecnologia-ethernet
 
Helio (TSX-V:HRC) January 2014 Presentation
Helio (TSX-V:HRC) January 2014 PresentationHelio (TSX-V:HRC) January 2014 Presentation
Helio (TSX-V:HRC) January 2014 Presentation
 
Tu plan de comunicación en internet, paso a paso
Tu plan de comunicación en internet, paso a pasoTu plan de comunicación en internet, paso a paso
Tu plan de comunicación en internet, paso a paso
 
Whats next-in-events-free-ebook
Whats next-in-events-free-ebookWhats next-in-events-free-ebook
Whats next-in-events-free-ebook
 
Master_thesis_-_Sustainable_psychology-_Stress-Overconsumption-Climate_change...
Master_thesis_-_Sustainable_psychology-_Stress-Overconsumption-Climate_change...Master_thesis_-_Sustainable_psychology-_Stress-Overconsumption-Climate_change...
Master_thesis_-_Sustainable_psychology-_Stress-Overconsumption-Climate_change...
 
Презентуем Технологические Проекты #hsesun
Презентуем Технологические Проекты #hsesunПрезентуем Технологические Проекты #hsesun
Презентуем Технологические Проекты #hsesun
 
Cifrado en Flujo y Bloque con Clave Secreta
Cifrado en Flujo y Bloque con Clave SecretaCifrado en Flujo y Bloque con Clave Secreta
Cifrado en Flujo y Bloque con Clave Secreta
 
Moss Jacosbon Ems Pla 182 Final Submission 12 15 08
Moss Jacosbon   Ems Pla 182 Final Submission 12 15 08Moss Jacosbon   Ems Pla 182 Final Submission 12 15 08
Moss Jacosbon Ems Pla 182 Final Submission 12 15 08
 
Ethicability for Organisations Today and into the Future
Ethicability for Organisations Today and into the FutureEthicability for Organisations Today and into the Future
Ethicability for Organisations Today and into the Future
 
Cdserv
CdservCdserv
Cdserv
 
Allen
Allen Allen
Allen
 
Canaima Presentacion
Canaima PresentacionCanaima Presentacion
Canaima Presentacion
 
Norma une 21.186
Norma une 21.186Norma une 21.186
Norma une 21.186
 

Semelhante a 99 problems but the search aint one, confoo 2011, andrei zmievski

Optimisation tnc1
Optimisation tnc1Optimisation tnc1
Optimisation tnc1bdsea89
 
Air Pollution Sampling and Analysis
Air Pollution Sampling and AnalysisAir Pollution Sampling and Analysis
Air Pollution Sampling and AnalysisRakshith Jain
 
Connectix webserver
Connectix webserverConnectix webserver
Connectix webserversteveheer
 
Connectix webserver
Connectix webserverConnectix webserver
Connectix webserversteveheer
 
Limites et perspectives du cinéma d'horreur français
Limites et perspectives du cinéma d'horreur françaisLimites et perspectives du cinéma d'horreur français
Limites et perspectives du cinéma d'horreur françaisAmauryPascaud
 
Dossier Presentación del Albergue El Último Bucardo
Dossier Presentación del Albergue El Último BucardoDossier Presentación del Albergue El Último Bucardo
Dossier Presentación del Albergue El Último BucardoEncarna Palma Andres
 
GIS and Google Earth In Geography
GIS and Google Earth In GeographyGIS and Google Earth In Geography
GIS and Google Earth In GeographyOllie Bray
 
WestEd Evaluation of Hawaii Special Education Program
WestEd Evaluation of Hawaii Special Education ProgramWestEd Evaluation of Hawaii Special Education Program
WestEd Evaluation of Hawaii Special Education ProgramHonolulu Civil Beat
 
Self Optimizing transactional data grids for elastic cloud environments
Self Optimizing transactional data grids for elastic cloud environmentsSelf Optimizing transactional data grids for elastic cloud environments
Self Optimizing transactional data grids for elastic cloud environmentsEuroCloud
 
Identifying Attributes
Identifying AttributesIdentifying Attributes
Identifying Attributestmra
 
Temps forts Printemps de la Beauté
Temps forts Printemps de la BeautéTemps forts Printemps de la Beauté
Temps forts Printemps de la BeautéCustomer Insight
 
Temps forts Printemps de la Beauté
Temps forts Printemps de la BeautéTemps forts Printemps de la Beauté
Temps forts Printemps de la BeautéCustomer Insight
 
Activities Gm Pri
Activities Gm PriActivities Gm Pri
Activities Gm Priminal81
 
Activities Gm Pri
Activities Gm PriActivities Gm Pri
Activities Gm Priminal81
 
MVCC Beekeeping Feasibility Study
MVCC Beekeeping Feasibility StudyMVCC Beekeeping Feasibility Study
MVCC Beekeeping Feasibility StudySherri Akers
 
[Harvard CS264] 04 - Intermediate-level CUDA Programming
[Harvard CS264] 04 - Intermediate-level CUDA Programming[Harvard CS264] 04 - Intermediate-level CUDA Programming
[Harvard CS264] 04 - Intermediate-level CUDA Programmingnpinto
 

Semelhante a 99 problems but the search aint one, confoo 2011, andrei zmievski (20)

Optimisation tnc1
Optimisation tnc1Optimisation tnc1
Optimisation tnc1
 
Vietnam Online Travel Behaviors
Vietnam Online Travel BehaviorsVietnam Online Travel Behaviors
Vietnam Online Travel Behaviors
 
Air Pollution Sampling and Analysis
Air Pollution Sampling and AnalysisAir Pollution Sampling and Analysis
Air Pollution Sampling and Analysis
 
Connectix webserver
Connectix webserverConnectix webserver
Connectix webserver
 
Connectix webserver
Connectix webserverConnectix webserver
Connectix webserver
 
Limites et perspectives du cinéma d'horreur français
Limites et perspectives du cinéma d'horreur françaisLimites et perspectives du cinéma d'horreur français
Limites et perspectives du cinéma d'horreur français
 
Dossier Presentación del Albergue El Último Bucardo
Dossier Presentación del Albergue El Último BucardoDossier Presentación del Albergue El Último Bucardo
Dossier Presentación del Albergue El Último Bucardo
 
GIS and Google Earth In Geography
GIS and Google Earth In GeographyGIS and Google Earth In Geography
GIS and Google Earth In Geography
 
WestEd Evaluation of Hawaii Special Education Program
WestEd Evaluation of Hawaii Special Education ProgramWestEd Evaluation of Hawaii Special Education Program
WestEd Evaluation of Hawaii Special Education Program
 
Self Optimizing transactional data grids for elastic cloud environments
Self Optimizing transactional data grids for elastic cloud environmentsSelf Optimizing transactional data grids for elastic cloud environments
Self Optimizing transactional data grids for elastic cloud environments
 
Five ten presentation
Five ten presentationFive ten presentation
Five ten presentation
 
Identifying Attributes
Identifying AttributesIdentifying Attributes
Identifying Attributes
 
CPDL - Charging Plan Definition Language
CPDL - Charging Plan Definition LanguageCPDL - Charging Plan Definition Language
CPDL - Charging Plan Definition Language
 
Temps forts Printemps de la Beauté
Temps forts Printemps de la BeautéTemps forts Printemps de la Beauté
Temps forts Printemps de la Beauté
 
Temps forts Printemps de la Beauté
Temps forts Printemps de la BeautéTemps forts Printemps de la Beauté
Temps forts Printemps de la Beauté
 
Activities Gm Pri
Activities Gm PriActivities Gm Pri
Activities Gm Pri
 
Activities Gm Pri
Activities Gm PriActivities Gm Pri
Activities Gm Pri
 
Portfolio
PortfolioPortfolio
Portfolio
 
MVCC Beekeeping Feasibility Study
MVCC Beekeeping Feasibility StudyMVCC Beekeeping Feasibility Study
MVCC Beekeeping Feasibility Study
 
[Harvard CS264] 04 - Intermediate-level CUDA Programming
[Harvard CS264] 04 - Intermediate-level CUDA Programming[Harvard CS264] 04 - Intermediate-level CUDA Programming
[Harvard CS264] 04 - Intermediate-level CUDA Programming
 

Mais de Bachkoutou Toutou

Making php see, confoo 2011
Making php see, confoo 2011 Making php see, confoo 2011
Making php see, confoo 2011 Bachkoutou Toutou
 
Sean coates fifty things and tricks, confoo 2011
Sean coates fifty things and tricks, confoo 2011Sean coates fifty things and tricks, confoo 2011
Sean coates fifty things and tricks, confoo 2011Bachkoutou Toutou
 
hacking your website with vega, confoo2011
hacking your website with vega, confoo2011hacking your website with vega, confoo2011
hacking your website with vega, confoo2011Bachkoutou Toutou
 
Premiers pas dans les extensions PHP, Pierrick Charron, Confoo 2011
Premiers pas dans les extensions PHP, Pierrick Charron, Confoo 2011Premiers pas dans les extensions PHP, Pierrick Charron, Confoo 2011
Premiers pas dans les extensions PHP, Pierrick Charron, Confoo 2011Bachkoutou Toutou
 
Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011
Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011
Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011Bachkoutou Toutou
 
Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011Bachkoutou Toutou
 
Connecting web Applications with Desktop, confoo 2011
Connecting web Applications with Desktop, confoo 2011Connecting web Applications with Desktop, confoo 2011
Connecting web Applications with Desktop, confoo 2011Bachkoutou Toutou
 
Connecting Web Application and Desktop, confoo 2011, qafoo
Connecting Web Application and Desktop, confoo 2011, qafooConnecting Web Application and Desktop, confoo 2011, qafoo
Connecting Web Application and Desktop, confoo 2011, qafooBachkoutou Toutou
 
Php Inside - confoo 2011 - Derick Rethans
Php Inside -  confoo 2011 - Derick RethansPhp Inside -  confoo 2011 - Derick Rethans
Php Inside - confoo 2011 - Derick RethansBachkoutou Toutou
 
WebShell - confoo 2011 - sean coates
WebShell - confoo 2011 - sean coatesWebShell - confoo 2011 - sean coates
WebShell - confoo 2011 - sean coatesBachkoutou Toutou
 
Stress Free Deployment - Confoo 2011
Stress Free Deployment  - Confoo 2011Stress Free Deployment  - Confoo 2011
Stress Free Deployment - Confoo 2011Bachkoutou Toutou
 
Confoo 2011 - Advanced OO Patterns
Confoo 2011 - Advanced OO PatternsConfoo 2011 - Advanced OO Patterns
Confoo 2011 - Advanced OO PatternsBachkoutou Toutou
 

Mais de Bachkoutou Toutou (14)

Making php see, confoo 2011
Making php see, confoo 2011 Making php see, confoo 2011
Making php see, confoo 2011
 
Sean coates fifty things and tricks, confoo 2011
Sean coates fifty things and tricks, confoo 2011Sean coates fifty things and tricks, confoo 2011
Sean coates fifty things and tricks, confoo 2011
 
hacking your website with vega, confoo2011
hacking your website with vega, confoo2011hacking your website with vega, confoo2011
hacking your website with vega, confoo2011
 
Premiers pas dans les extensions PHP, Pierrick Charron, Confoo 2011
Premiers pas dans les extensions PHP, Pierrick Charron, Confoo 2011Premiers pas dans les extensions PHP, Pierrick Charron, Confoo 2011
Premiers pas dans les extensions PHP, Pierrick Charron, Confoo 2011
 
Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011
Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011
Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011
 
Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011
 
Connecting web Applications with Desktop, confoo 2011
Connecting web Applications with Desktop, confoo 2011Connecting web Applications with Desktop, confoo 2011
Connecting web Applications with Desktop, confoo 2011
 
Connecting Web Application and Desktop, confoo 2011, qafoo
Connecting Web Application and Desktop, confoo 2011, qafooConnecting Web Application and Desktop, confoo 2011, qafoo
Connecting Web Application and Desktop, confoo 2011, qafoo
 
Php Inside - confoo 2011 - Derick Rethans
Php Inside -  confoo 2011 - Derick RethansPhp Inside -  confoo 2011 - Derick Rethans
Php Inside - confoo 2011 - Derick Rethans
 
WebShell - confoo 2011 - sean coates
WebShell - confoo 2011 - sean coatesWebShell - confoo 2011 - sean coates
WebShell - confoo 2011 - sean coates
 
Stress Free Deployment - Confoo 2011
Stress Free Deployment  - Confoo 2011Stress Free Deployment  - Confoo 2011
Stress Free Deployment - Confoo 2011
 
Apc Memcached Confoo 2011
Apc Memcached Confoo 2011Apc Memcached Confoo 2011
Apc Memcached Confoo 2011
 
Xdebug confoo11
Xdebug confoo11Xdebug confoo11
Xdebug confoo11
 
Confoo 2011 - Advanced OO Patterns
Confoo 2011 - Advanced OO PatternsConfoo 2011 - Advanced OO Patterns
Confoo 2011 - Advanced OO Patterns
 

99 problems but the search aint one, confoo 2011, andrei zmievski

  • 1. 99 Problems, But The Search Ain’t One Andrei Zmievski • ConFoo •!Mar 9, 2011
  • 2. who am i? curl http://localhost:9200/speaker/info/andrei {“name”: “Andrei Zmievski”, “works”: “Analog Co-op”, “projects”: [“PHP”, “PHP-GTK”, “Smarty”, “Unicode/i18n”], “likes”: [“coding”, “beer”, “brewing”, “photography”], “twitter”: “@a”, “email”: “andrei@zmievski.org”}
  • 3. what is elasticsearch? a search engine for the NoSQL generation domain-driven distributed RESTful Hitchhiker’s Guide to the Galaxy (no, really)
  • 7. 1. index !"#$%&'()*+%,--./00$1!2$,13-/45660!17803.92:9#0;%&<= > request %%%%?72@9?/%?A7<#9B%C@B9D3:B?E %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7==-%)79?E %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE %%%%?-KB--9#?/%?2?E %%%%?,9BH,-?/%;LM N= > response %%%%?1:?/-#"9 %%%%?OB7<9P?/?!178? %%%%?O-I.9?/?3.92:9#? %%%%?OB<?/?;? N
  • 8. 2. search request !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99# >%?-11:?%/%TE %%?O3,2#<3?%/%> %%%%?-1-2$?%/%;E %%%%?3"!!9338"$?%/%;E %%%%?82B$9<?%/%6 %%NE %%?,B-3?%/%> %%%%?-1-2$?%/%;E response %%%%?@2PO3!1#9?%/%6UV46LM64E %%%%?,B-3?%/%G%> %%%%%%?OB7<9P?%/%?!178?E %%%%%%?O-I.9?%/%?3.92:9#?E %%%%%%?OB<?%/%?;?E %%%%%%?O3!1#9?%/%6UV46LM64E %%%%%%?O31"#!9?%/% > %%%%?72@9?/%?A7<#9B%C@B9D3:B?E %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE %%%%?-KB--9#?/%?2?E %%%%?,9BH,-?/%;LM N%N%J%N%N
  • 9. 2. search request !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99# >%?-11:?%/%TE %%?O3,2#<3?%/%> %%%%?-1-2$?%/%;E %%%%?3"!!9338"$?%/%;E %%%%?82B$9<?%/%6 %%NE total number of hits %%?,B-3?%/%> !!!!"#$#%&"!'!() response %%%%?@2PO3!1#9?%/%6UV46LM64E %%%%?,B-3?%/%G%> %%%%%%?OB7<9P?%/%?!178?E %%%%%%?O-I.9?%/%?3.92:9#?E %%%%%%?OB<?%/%?;?E %%%%%%?O3!1#9?%/%6UV46LM64E %%%%%%?O31"#!9?%/% > %%%%?72@9?/%?A7<#9B%C@B9D3:B?E %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE %%%%?-KB--9#?/%?2?E %%%%?,9BH,-?/%;LM N%N%J%N%N
  • 10. 2. search request !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99# >%?-11:?%/%TE %%?O3,2#<3?%/%> %%%%?-1-2$?%/%;E %%%%?3"!!9338"$?%/%;E %%%%?82B$9<?%/%6 %%NE %%?,B-3?%/%> %%%%?-1-2$?%/%;E the index of the doc response %%%%?@2PO3!1#9?%/%6UV46LM64E %%%%?,B-3?%/%G%> !!!!!!"*+,-./"!'!"0$,1") %%%%%%?O-I.9?%/%?3.92:9#?E %%%%%%?OB<?%/%?;?E %%%%%%?O3!1#9?%/%6UV46LM64E %%%%%%?O31"#!9?%/% > %%%%?72@9?/%?A7<#9B%C@B9D3:B?E %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE %%%%?-KB--9#?/%?2?E %%%%?,9BH,-?/%;LM N%N%J%N%N
  • 11. 2. search request !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99# >%?-11:?%/%TE %%?O3,2#<3?%/%> %%%%?-1-2$?%/%;E %%%%?3"!!9338"$?%/%;E %%%%?82B$9<?%/%6 %%NE %%?,B-3?%/%> %%%%?-1-2$?%/%;E response %%%%?@2PO3!1#9?%/%6UV46LM64E %%%%?,B-3?%/%G%> the type of the doc %%%%%%?OB7<9P?%/%?!178?E !!!!!!"*#23."!'!"43.%5.6") %%%%%%?OB<?%/%?;?E %%%%%%?O3!1#9?%/%6UV46LM64E %%%%%%?O31"#!9?%/% > %%%%?72@9?/%?A7<#9B%C@B9D3:B?E %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE %%%%?-KB--9#?/%?2?E %%%%?,9BH,-?/%;LM N%N%J%N%N
  • 12. 2. search request !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99# >%?-11:?%/%TE %%?O3,2#<3?%/%> %%%%?-1-2$?%/%;E %%%%?3"!!9338"$?%/%;E %%%%?82B$9<?%/%6 %%NE %%?,B-3?%/%> %%%%?-1-2$?%/%;E response %%%%?@2PO3!1#9?%/%6UV46LM64E %%%%?,B-3?%/%G%> %%%%%%?OB7<9P?%/%?!178?E %%%%%%?O-I.9?%/%?3.92:9#?E !!!!!!"*+-"!'!"(") the id of the doc %%%%%%?O3!1#9?%/%6UV46LM64E %%%%%%?O31"#!9?%/% > %%%%?72@9?/%?A7<#9B%C@B9D3:B?E %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE %%%%?-KB--9#?/%?2?E %%%%?,9BH,-?/%;LM N%N%J%N%N
  • 13. 2. search request !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99# >%?-11:?%/%TE %%?O3,2#<3?%/%> %%%%?-1-2$?%/%;E %%%%?3"!!9338"$?%/%;E %%%%?82B$9<?%/%6 %%NE %%?,B-3?%/%> %%%%?-1-2$?%/%;E response %%%%?@2PO3!1#9?%/%6UV46LM64E %%%%?,B-3?%/%G%> %%%%%%?OB7<9P?%/%?!178?E %%%%%%?O-I.9?%/%?3.92:9#?E !!!!!!"*+-"!'!"(") %%%%%%?O3!1#9?%/%6UV46LM64E the hit score %%%%%%?O31"#!9?%/% > %%%%?72@9?/%?A7<#9B%C@B9D3:B?E %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE %%%%?-KB--9#?/%?2?E %%%%?,9BH,-?/%;LM N%N%J%N%N
  • 14. 2. search request !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99# >%?-11:?%/%TE %%?O3,2#<3?%/%> %%%%?-1-2$?%/%;E %%%%?3"!!9338"$?%/%;E %%%%?82B$9<?%/%6 %%NE %%?,B-3?%/%> %%%%?-1-2$?%/%;E response %%%%?@2PO3!1#9?%/%6UV46LM64E %%%%?,B-3?%/%G%> %%%%%%?OB7<9P?%/%?!178?E %%%%%%?O-I.9?%/%?3.92:9#?E !!!!!!"*+-"!'!"(") %%%%%%?O3!1#9?%/%6UV46LM64E %%%%%%?O31"#!9?%/% the original doc contents 7 !!!!",%8."'!"9,-6.+!:8+.;45+") !!!!"#%&5"'!"<<!=6$>&.84)!>?#!#@.!A.%60@!9+,B#!C,.") !!!!"&+5.4"'!D"0$-+,E")!">..6")!"3@$#$E6%3@2"F) !!!!"#G+##.6"'!"%") !!!!"@.+E@#"'!(HI J%N%J%N%N
  • 15. 2. search request !"#$%,--./00$1!2$,13-/45660!17803.92:9#0O392#!,QRSF99# >%"#$$5"!'!K) %%?O3,2#<3?%/%> %%%%?-1-2$?%/%;E the execution time %%%%?3"!!9338"$?%/%;E %%%%?82B$9<?%/%6 %%NE %%?,B-3?%/%> %%%%?-1-2$?%/%;E response %%%%?@2PO3!1#9?%/%6UV46LM64E %%%%?,B-3?%/%G%> %%%%%%?OB7<9P?%/%?!178?E %%%%%%?O-I.9?%/%?3.92:9#?E %%%%%%?OB<?%/%?;?E %%%%%%?O3!1#9?%/%6UV46LM64E %%%%%%?O31"#!9?%/% > %%%%?72@9?/%?A7<#9B%C@B9D3:B?E %%%%?-2$:?/%?44%(#1F$9@3E%F"-%-,9%*92#!,%AB7=-%)79?E %%%%?$B:93?/%G?!1<B7H?E%?F99#?E%?.,1-1H#2.,I?JE %%%%?-KB--9#?/%?2?E %%%%?,9BH,-?/%;LM N%N%J%N%N
  • 17. demo
  • 18. distributed model provides: performance resiliency (high-availability)
  • 19. shards a portion of the document space each one is a separate Lucene index thus, many per-index settings are available document is sharded by its _id value but can be assigned (routed) to a shard deterministically
  • 20. zero-conf discovery zen (multicast and unicast) cloud (EC2 via API)
  • 21. auto-routing master node: maintains cluster state reassigns shards if nodes leave/join cluster any node can process the search request the query is handled via scatter-gather mechanism
  • 22. replicas each shard can have 1 or more replicas # of replicas can be updated dynamically after index creation replicas can be used for querying in parallel
  • 23. shard allocation node 1 start with a single node
  • 24. shard allocation node 1 person1 person2 PUT /person { “index”: { “number_of_shards”: 2, “number_of_replicas”: 1 }}
  • 25. shard allocation node 1 node 2 person1 person1 person2 person2 start the second node
  • 26. shard allocation node 1 node 2 node 3 node 4 person1 person1 person2 person2 start 2 more nodes
  • 27. shard allocation node 1 node 2 node 3 node 4 person1 person1 person2 person2 start 2 more nodes
  • 28. document sharding node 1 node 2 node 3 node 4 person1 person1 person2 person2 PUT /person/info/1 {…}
  • 29. document sharding node 1 node 2 node 3 node 4 person1 person1 person2 person2 PUT /person/info/1 hashed to shard 1 {…}
  • 30. document sharding node 1 node 2 node 3 node 4 person1 person1 person2 person2 replicated PUT /person/info/1 {…}
  • 31. document sharding node 1 node 2 node 3 node 4 person1 person1 person2 person2 PUT /person/info/2 {…}
  • 32. document sharding node 1 node 2 node 3 node 4 person1 person1 person2 person2 hashed to shard 2 PUT /person/info/2 {…}
  • 33. document sharding node 1 node 2 node 3 node 4 person1 person1 person2 person2 replicated PUT /person/info/2 {…}
  • 34. scatter-gather node 1 node 2 node 3 node 4 person1 person1 person2 person2 GET /person/_search?q=name:thomas
  • 35. shard allocation node 1 node 2 node 3 node 4 person1 person1 person2 person2 GET /person/_search?q=name:thomas
  • 36. shard allocation node 1 node 2 node 3 node 4 person1 person1 person2 person2 GET /person/_search?q=name:thomas
  • 37. shard allocation node 1 node 2 node 3 node 4 person1 person1 person2 person2 GET /person/_search?q=name:thomas
  • 38. demo
  • 39. transactional model per-document consistency no need to commit/flush uses write-ahead transaction log write consistency (W) can be controlled one, quorum, or all
  • 40. (near) real-time search 1 second refresh rate by default _refresh API also
  • 41. index storage node data considered transient can be stored in local file system, JVM heap, native OS memory, or FS & memory combination persistent storage requires a gateway
  • 42. gateways persistent store for cluster state and indices asynchronous, translog-based write strategy allows full recovery if a cluster restart is needed supported gateways: local shared FS Hadoop via HDFS S3
  • 43. mapping describes document structure to the search engine automatically created with sensible defaults explicit mapping can be provided (generally, a good idea) can run into merge conflicts
  • 44. mapping important meta fields: _source _all there are more
  • 45. mapping types simple: string, integer/long, float/double, boolean, and null) complex: array, object
  • 46. sample mapping document >?"39#?/%%%%%%?<9#B!:?E %?-B-$9?/%%%%%?W17X-%(27B!?E %?-2H3?/%%%%%%G?.#18B$B7H?E%?<9F"HHB7H?E%?.,.?JE %?.13-W2-9?/%%?56;6&;5&55+;M/;Y/;5?E %?.#B1#B-I?/%%5N >?.13-?/%> %%?.#1.9#-B93?%/%> mapping %%%%?"39#?/%%%%%%>?-I.9?/%?3-#B7H?E%?B7<9P?/%?71-O272$IZ9<?NE %%%%?@9332H9?/%%%>?-I.9?/%?3-#B7H?E%[F113-/%;UVNE %%%%?-2H3?/%%%%%%>?-I.9?/%?3-#B7H?E%?B7!$"<9OB7O2$$?/%?71?NE %%%%?.13-W2-9?%/%>?-I.9?%/%?<2-9?E%[3-1#9/%[71NE %%%%?.#B1#B-I?%/%>?-I.9?%/%?B7-9H9#?N NNN
  • 47. analyzers break down (tokenize) and normalize fields during indexing and query strings at search time analyzer = tokenizer + token filters (0 or more) *-27<2#<%A72$IZ9#%S %%%*-27<2#<%+1:97BZ9#%] %%%%%%%*-27<2#<%+1:97%^B$-9#%] %%%%%%%_1K9#!239%+1:97%^B$-9#%] %%%%%%%*-1.%+1:97%^B$-9#
  • 48. analyzers analyzers, tokenizers, and filters can be customized mapping elasticsearch.yml B7<9P/ %%272$I3B3/ %%%%272$IZ9#/ %%%%%%.?&%,E/ %%%%%%%%-I.9/%!"3-1@ %%%%%%%%-1:97BZ9#/%3-27<2#< %%%%%%%%8B$-9#/%G3-27<2#<E%$1K9#!239E%3-1.E %%%%%%%%%%%%%%%%%23!BB81$<B7HE%.1#-9#*-9@J ` ?-B-$9?/%>?-I.9?/%?3-#B7H?E%?272$IZ9#?/%?9"$27H?NE `
  • 49. API
  • 50. API conventions append ?pretty=true to get readable JSON boolean values: false/0/off = false, rest is true JSONP support via callback parameter
  • 51. API structure http://host:port/[index]/[type]/[_action/id] GET http://es:9200/_status GET http://es:9200/twitter/_status POST http://es:9200/twitter/tweet/1 GET http://es:9200/twitter/tweet/1
  • 52. API structure http://host:port/[index]/[type]/[_action/id] GET http://es:9200/twitter/tweet/_search GET http://es:9200/twitter/user/_search GET http://es:9200/twitter/tweet,user/_search GET http://es:9200/twitter,facebook/_search GET http://es:9200/_search
  • 54. API {core} index search bulk query delete from/size paging delete by query sort get highlighting count selective fields
  • 55. API {indices} create optimize delete snapshot open/close update settings get/put/delete analyze mapping status refresh flush
  • 56. Query DSL term / terms query_string range default_operator prefix analyzer bool phrase_slop fuzzy etc wildcard
  • 57. filters share some similar features with queries (term, range, etc) why use a filter?
  • 58. filters faster than queries cached (depends on the filter) the cache is used for different queries against the same filter no scoring more useful ones: term, terms, range, prefix, and, or, not, exists, missing, query
  • 59. facets provide aggregated data based on the search request terms, histogram, date histogram, range, statistical, and more
  • 60. geo search implemented as filters (and a facet) geo_distance geo_bounding_box geo_polygon
  • 61. interfaces REST Java /!Groovy Language clients (REST/Thrift): pyes, PHP (standalone and symfony), Ruby, Perl Flume sink implementation
  • 62. data import ES is not the primary data store (usually) to import/synchronize data: write an agent (Gearman, message queues, etc) use rivers (CouchDB, RabbitMQ, Twitter)
  • 63. 10 more features versioning load balancing nodes index aliases plugins parent/child docs more_like_this scripting multi_field mapping dynamic mapping percolation templates