SlideShare une entreprise Scribd logo
1  sur  178
You Know, For Search
lightning talk
lightning talk



    kick ass
lightning talk



    kick ass




       ~joke
ping 127.0.0.1
ping 127.0.0.1
  icmq_seq=0 name=shay.banon
ping 127.0.0.1
  icmq_seq=0 name=shay.banon
  icmq_seq=1 a.k.a=kimchy
ping 127.0.0.1
  icmq_seq=0 name=shay.banon
  icmq_seq=1 a.k.a=kimchy
  icmq_seq=2 blog=http://kimchy.org
ping 127.0.0.1
  icmq_seq=0 name=shay.banon
  icmq_seq=1 a.k.a=kimchy
  icmq_seq=2 blog=http://kimchy.org
  icmq_seq=3 twitter=kimchy
ping elasticsearch
ping elasticsearch
  icmq_seq=0 tag=open_source (apache)
ping elasticsearch
  icmq_seq=0 tag=open_source (apache)
  icmq_seq=1 tag=distributed
ping elasticsearch
  icmq_seq=0 tag=open_source (apache)
  icmq_seq=1 tag=distributed
  icmq_seq=2 tag=RESTful
ping elasticsearch
  icmq_seq=0 tag=open_source (apache)
  icmq_seq=1 tag=distributed
  icmq_seq=2 tag=RESTful
  icmq_seq=3 tag=(no_sql) search_engine
ping elasticsearch
  icmq_seq=0 tag=open_source (apache)
  icmq_seq=1 tag=distributed
  icmq_seq=2 tag=RESTful
  icmq_seq=3 tag=(no_sql) search_engine
  icmq_seq=4 site=http://www.elasticsearch.com
open_source
open_source

              apache_2
open_source

              apache_2


  http://github.com/elasticsearch/elasticsearch
open_source

              apache_2


  http://github.com/elasticsearch/elasticsearch


               fork, push, send_pull
your_data
your_data
      => your_search
your_data
             => your_search

a product should natively
            talk the domain model
your_data
             => your_search

a product should natively
            talk the domain model
     and not the other way around
recipes for good domain model language
recipes for good domain model language

             - document_oriented
recipes for good domain model language

             - document_oriented
             - schema free
recipes for good domain model language

             - document_oriented
             - schema free
             - include json
recipes for good domain model language

             - document_oriented
             - schema free
             - include json
                 de_facto open_web standard
lets build ourself an amazon store
lets build ourself an amazon store




      (we will get to the cloud laters)
first thing we have are books
this is how they look like



            {
                "book" : {
                  "isbn" : "0812504321",
                  "name" : "Call of the Wild",
                  "author" : {
                     "first_name" : "Jack",
                     "last_name" : "London"
                  },
                  "pages" : 128,
                  "tag" : ["fiction", "children"]
                }
            }
lets index it


$ curl -XPUT host:9200/amazon/book/0812504321 -d ‘
                    {
                        "book" : {
                          "isbn" : "0812504321",
                          "name" : "Call of the Wild",
                          "author" : {
                             "first_name" : "Jack",
                             "last_name" : "London"
                          },
                          "pages" : 128,
                          "tag" : ["fiction", "children"]
                        }
                    }
‘
... `amazon` is the _index name


$ curl -XPUT host:9200/amazon/book/0812504321 -d ‘
                    {
                        "book" : {
                          "isbn" : "0812504321",
                          "name" : "Call of the Wild",
                          "author" : {
                             "first_name" : "Jack",
                             "last_name" : "London"
                          },
                          "pages" : 128,
                          "tag" : ["fiction", "children"]
                        }
                    }
‘
... `book` is the _type


$ curl -XPUT host:9200/amazon/book/0812504321 -d ‘
                    {
                        "book" : {
                          "isbn" : "0812504321",
                          "name" : "Call of the Wild",
                          "author" : {
                             "first_name" : "Jack",
                             "last_name" : "London"
                          },
                          "pages" : 128,
                          "tag" : ["fiction", "children"]
                        }
                    }
‘
... `0812504321` is the _id


$ curl -XPUT host:9200/amazon/book/0812504321 -d ‘
                    {
                        "book" : {
                          "isbn" : "0812504321",
                          "name" : "Call of the Wild",
                          "author" : {
                             "first_name" : "Jack",
                             "last_name" : "London"
                          },
                          "pages" : 128,
                          "tag" : ["fiction", "children"]
                        }
                    }
‘
search for all fiction books
$ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘
search for all fiction books
$ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘


         {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits":
         [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : {
            "book" : {
               "isbn" : "0812504321",
               "name" : "Call of the Wild",
               "author" : {
                  "first_name" : "Jack",
                  "last_name" : "London"
               },
               "pages" : 128,
               "tag" : ["fiction", "children"]
            }
         }}]}}
... number of total hits
$ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘


         {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits":
         [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : {
            "book" : {
               "isbn" : "0812504321",
               "name" : "Call of the Wild",
               "author" : {
                  "first_name" : "Jack",
                  "last_name" : "London"
               },
               "pages" : 128,
               "tag" : ["fiction", "children"]
            }
         }}]}}
... each hit has the `_index` it came from
$ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘


         {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits":
         [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : {
            "book" : {
               "isbn" : "0812504321",
               "name" : "Call of the Wild",
               "author" : {
                  "first_name" : "Jack",
                  "last_name" : "London"
               },
               "pages" : 128,
               "tag" : ["fiction", "children"]
            }
         }}]}}
... each hit has the `_type` it belongs to
$ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘


         {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits":
         [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : {
            "book" : {
               "isbn" : "0812504321",
               "name" : "Call of the Wild",
               "author" : {
                  "first_name" : "Jack",
                  "last_name" : "London"
               },
               "pages" : 128,
               "tag" : ["fiction", "children"]
            }
         }}]}}
... each hit has its `_id`
$ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘


         {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits":
         [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : {
            "book" : {
               "isbn" : "0812504321",
               "name" : "Call of the Wild",
               "author" : {
                  "first_name" : "Jack",
                  "last_name" : "London"
               },
               "pages" : 128,
               "tag" : ["fiction", "children"]
            }
         }}]}}
... each hit has the actual _source document
$ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘


         {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits":
         [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : {
            "book" : {
               "isbn" : "0812504321",
               "name" : "Call of the Wild",
               "author" : {
                  "first_name" : "Jack",
                  "last_name" : "London"
               },
               "pages" : 128,
               "tag" : ["fiction", "children"]
            }
         }}]}}
... each hit has the actual _source document
$ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘


         {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits":
         [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : {
            "book" : {
               "isbn" : "0812504321",
               "name" : "Call of the Wild",
               "author" : {
                  "first_name" : "Jack",                 (can be disabled)
                  "last_name" : "London"
               },
               "pages" : 128,
               "tag" : ["fiction", "children"]
            }
         }}]}}
next, we have cds




           {
               "cd" : {
                  "asin" : "B00192IV0O",
                  "name" : "THE E.N.D. (Energy Never Dies)",
                  "artist" : "Black Eyed Peas",
                  "label" : "Interscope",
                  "release_date": "2009-06-09",
                  "tag" : ["hip-hop", "pop-rap"]
               }
           }
lets index it as well


$ curl -XPUT host:9200/amazon/cd/B00192IV0O -d ‘


                    {
                        "cd" : {
                           "asin" : "B00192IV0O",
                           "name" : "THE E.N.D. (Energy Never Dies)",
                           "artist" : "Black Eyed Peas",
                           "label" : "Interscope",
                           "release_date": "2009-06-09",
                           "tag" : ["hip-hop", "pop-rap"]
                        }
                    }


‘
... same _index, `amazon`


$ curl -XPUT host:9200/amazon/cd/B00192IV0O -d ‘


                    {
                        "cd" : {
                           "asin" : "B00192IV0O",
                           "name" : "THE E.N.D. (Energy Never Dies)",
                           "artist" : "Black Eyed Peas",
                           "label" : "Interscope",
                           "release_date": "2009-06-09",
                           "tag" : ["hip-hop", "pop-rap"]
                        }
                    }


‘
... new _type, `cd`


$ curl -XPUT host:9200/amazon/cd/B00192IV0O -d ‘


                    {
                        "cd" : {
                           "asin" : "B00192IV0O",
                           "name" : "THE E.N.D. (Energy Never Dies)",
                           "artist" : "Black Eyed Peas",
                           "label" : "Interscope",
                           "release_date": "2009-06-09",
                           "tag" : ["hip-hop", "pop-rap"]
                        }
                    }


‘
search for all hip-hop cds

$ curl -XGET host:9200/amazon/cd/_search?q=tag:hip-hop‘
search across _type(s)
search across _type(s)



search on both `cd` and `book` using `name`
      $ curl -XGET ‘host:9200/amazon/cd,book/_search?q=name:call’
search across _type(s)



search on both `cd` and `book` using `name`
      $ curl -XGET ‘host:9200/amazon/cd,book/_search?q=name:call’


search on `_all` types using `name`
      $ curl -XGET ‘host:9200/amazon/_search?q=name:call’
search across _type(s)



search on both `cd` and `book` using `name`
         $ curl -XGET ‘host:9200/amazon/cd,book/_search?q=name:call’


search on `_all` types using `name`
         $ curl -XGET ‘host:9200/amazon/_search?q=name:call’


search on specific fields types
 $ curl -XGET ‘host:9200/amazon/_search?q=book.author.first_name:jack
                OR cd.artist:jack‘
book and cd can be indices as well


$ curl -XPUT host:9200/book/info/0812504321 -d ‘


                     {
                         "isbn" : "0812504321",
                         "name" : "Call of the Wild",
                         "author" : {
                            "first_name" : "Jack",
                            "last_name" : "London"
                         },
                         "pages" : 128,
                         "tag" : ["fiction", "children"]
                     }


‘
... `book` is now the _index


$ curl -XPUT host:9200/book/info/0812504321 -d ‘


                     {
                         "isbn" : "0812504321",
                         "name" : "Call of the Wild",
                         "author" : {
                            "first_name" : "Jack",
                            "last_name" : "London"
                         },
                         "pages" : 128,
                         "tag" : ["fiction", "children"]
                     }


‘
... `info` is the _type


$ curl -XPUT host:9200/book/info/0812504321 -d ‘


                     {
                         "isbn" : "0812504321",
                         "name" : "Call of the Wild",
                         "author" : {
                            "first_name" : "Jack",
                            "last_name" : "London"
                         },
                         "pages" : 128,
                         "tag" : ["fiction", "children"]
                     }


‘
cd is an index as well


$ curl -XPUT host:9200/cd/info/B00192IV0O -d ‘



                     {
                         "asin" : "B00192IV0O",
                         "name" : "THE E.N.D. (Energy Never Dies)",
                         "artist" : "Black Eyed Peas",
                         "label" : "Interscope",
                         "release_date": "2009-06-09",
                            "tag" : ["hip-hop", "pop-rap"]
                     }



‘
search across _index(es)
search across _index(es)



search on both `cd` and `book` using `name`
      $ curl -XGET ‘host:9200/cd,book/info/_search?q=name:call’
search across _index(es)



search on both `cd` and `book` using `name`
       $ curl -XGET ‘host:9200/cd,book/info/_search?q=name:call’


search on `_all` indices using `name`
       $ curl -XGET ‘host:9200/_search?q=name:call’
query_dsl
query_dsl



done with the your_data part
query_dsl



done with the your_data part

       => now to the your_search part
... term_query

{
    “term” : {
       “name” : “call”
    }
}
... term_query, also with type

{
    “term” : {
       “name” : “call”
    }
}


                         {
                             “term” : {
                                “book.name” : “call”
                             }
                         }
... range_query

{
    “range” : {
      “pages” : {
         “from” : 200,
         “to” : 300
      }
    }
}
... range_query, also with type

{
    “range” : {
      “pages” : {
         “from” : 200,
         “to” : 300
      }
    }
}                        {
                             “range” : {
                               “book.pages” : {
                                  “from” : 200,
                                  “to” : 300
                               }
                             }
                         }
... many more queries

{
    “prefix” : {
      “book.name” : “ca”
    }
}
... many more queries

{
    “prefix” : {
      “book.name” : “ca”
    }
}
               {
                   “wildcard” : {
                     “book.name” : “c*ll”
                   }
               }
... many more queries

{
    “prefix” : {                    {
      “book.name” : “ca”               “field” : {
    }                                    “book.name” : “+call +wild”
}                                      }
               {                   }
                   “wildcard” : {
                     “book.name” : “c*ll”
                   }
               }
... many more queries

{
    “prefix” : {                     {
      “book.name” : “ca”                “field” : {
    }                                     “book.name” : “+call +wild”
}                                       }
               {                    }
                   “wildcard” : {
                     “book.name” : “c*ll”
                   }
               }
                           {
                               “query_string” : {
                                 “query” : “+call +wild”
                               }
                           }
... and, of course, bool_query

{
    “bool” : {
      “must” : [
         { “field” : { “book.name” : “+call +wild” } },
         { “range” : { “book.pages” : { “gte” : 200 } } }
      ],
      “must_not” : [
         { “term” : { “book.author.first_name” : “jack” } }
      ],
      “should” : [
         { “term” : { “book.author.last_name” : “london” } }
      ]
    }
}
filters


faster than queries
filters


faster than queries
              no scoring
filters


faster than queries
              no scoring

    cached for even faster access
... sample filters (wrapped as
            constant_score query)

{
    “constant_score” : {
      “filter” : {
        “term” : {
           “name” : “call”
        }
      }
    }
}
... sample filters (wrapped as
            constant_score query)

{
    “constant_score” : {
      “filter” : {
        “term” : {
                             {
           “name” : “call”
                                 “constant_score” : {
        }
                                   “filter” : {
      }
                                     “range” : {
    }
                                        “book.pages” : {
}
                                           “from” : 100,
                                           “to” : 200
                                        }
                                     }
                                   }
                                 }
                             }
... easily combined with queries

    {
        “filtered” : {
          “query” : {
             “query_string” : {
               “query” : “+call +wild”
             }
          }
          “filter” : {
             “range” : {
               “book.pages” : {
                  “from” : 100, “to” : 200
               }
             }
          }
        }
    }
... easily combined with queries

    {
        “filtered” : {
          “query” : {
             “query_string” : {
               “query” : “+call +wild”
             }
          }
          “filter” : {
             “range” : {
               “book.pages” : {
                  “from” : 100, “to” : 200
               }
             }
          }
        }
    }
... easily combined with queries

    {
        “filtered” : {
          “query” : {
             “query_string” : {
               “query” : “+call +wild”
             }
          }
          “filter” : {
             “range” : {
               “book.pages” : {
                  “from” : 100, “to” : 200
               }
             }
          }
        }
    }
... easily combined with queries

    {
        “filtered” : {
          “query” : {
             “query_string” : {
               “query” : “+call +wild”
             }
          }
          “filter” : {
             “range” : {
               “book.pages” : {
                  “from” : 100, “to” : 200
               }
             }
          }
        }
    }
used in a search request


$ curl -XPOST ‘host:9200/amazon/cd/_search‘ -d ‘
{
  “query” : {
     “field” : {
        “name” : “+call + wild”
     }
  }
}
‘
other search features
other search features


highlighting
other search features


highlighting

               facets
other search features


highlighting
                        retrieve specific fields
               facets
other search features


 highlighting
                         retrieve specific fields
                facets

_all field
other search features


 highlighting
                         retrieve specific fields
                facets

_all field
                           scrolling
distributed
automatic shard allocation
... start 1st node

node 1
... create an index with 2 shards, 1 replica

node 1




                  PUT /amazon
                  {
                    “index.number_of_shards” : 2,
                    “index.number_of_replicas” : 1
                  }
... create an index with 2 shards, 1 replica

node 1
  1




                  PUT /amazon
                  {
                    “index.number_of_shards” : 2,
                    “index.number_of_replicas” : 1
                  }
... create an index with 2 shards, 1 replica

node 1
  1

  2




                  PUT /amazon
                  {
                    “index.number_of_shards” : 2,
                    “index.number_of_replicas” : 1
                  }
... start 2nd node

node 1        node 2
  1              1

  2              2
... start 3rd and 4th

node 1         node 2      node 3    node 4
  1                              1

                 2                     2
... index a document

node 1        node 2          node 3     node 4
  1                             1

                2                          2




                    PUT /amazon/book/1
                    {
                      ...
                    }
... index a document
                   => hashed to 1st shard
node 1        node 2          node 3     node 4
  1                             1

                2                          2




                    PUT /amazon/book/1
                    {
                      ...
                    }
... index a document
                   => replicated
node 1        node 2           node 3     node 4
  1                              1

                 2                          2




                     PUT /amazon/book/1
                     {
                       ...
                     }
... index another document

node 1        node 2          node 3     node 4
  1                             1

                2                          2




                    PUT /amazon/book/2
                    {
                      ...
                    }
... index another document
                   => hashed to 2nd shard
node 1        node 2          node 3     node 4
  1                             1

                2                          2




                    PUT /amazon/book/2
                    {
                      ...
                    }
... index another document
                   => replicated
node 1        node 2          node 3     node 4
  1                             1

                2                          2




                    PUT /amazon/book/2
                    {
                      ...
                    }
search

node 1        node 2            node 3          node 4
  1                                1

                  2                                2




                      GET /amazon/_search?q=name:call
search
                      => scatter
node 1        node 2            node 3          node 4
  1                                1

                  2                                2




                      GET /amazon/_search?q=name:call
search
                      => gather
node 1        node 2            node 3          node 4
  1                                1

                  2                                2




                      GET /amazon/_search?q=name:call
create another index

node 1        node 2           node 3           node 4
  1                               1

                2                                  2




                    PUT /amazon2
                    {
                      “index.number_of_shards” : 1,
                      “index.number_of_replicas” : 1
                    }
create another index

node 1        node 2           node 3           node 4
  1             1                 1

  1             2                                  2




                    PUT /amazon2
                    {
                      “index.number_of_shards” : 1,
                      “index.number_of_replicas” : 1
                    }
create another index

node 1        node 2     node 3      node 4
  1             1          1

  1             2                      2




      almost all settings are index based
per document consistency
per document consistency

            - you index it, its there
per document consistency

            - you index it, its there
            - no need to commit / flush
per document consistency

            - you index it, its there
            - no need to commit / flush
            - uses a transaction log
(near) real_time search
(near) real_time search

             - automatic, 1 second refresh rate
(near) real_time search

             - automatic, 1 second refresh rate
             - there’s an api for that
(near) real_time search

             - automatic, 1 second refresh rate
             - there’s an api for that
                  - POST /_refresh
long_term persistency
long_term persistency

             - similar to apple time_machine
long_term persistency

             - similar to apple time_machine
             - or data_grid write_behind
long_term persistency

             - similar to apple time_machine
             - or data_grid write_behind
             - write changes to index / translog
long_term persistency

             - similar to apple time_machine
             - or data_grid write_behind
             - write changes to index / translog
               - to a shared persistent storage
long_term persistency

             - similar to apple time_machine
             - or data_grid write_behind
             - write changes to index / translog
               - to a shared persistent storage
               - asynchronously (reliable)
long_term persistency

             - similar to apple time_machine
             - or data_grid write_behind
             - write changes to index / translog
               - to a shared persistent storage
               - asynchronously (reliable)
               - low requirements from storage
long_term persistency

             - similar to apple time_machine
             - or data_grid write_behind
             - write changes to index / translog
               - to a shared persistent storage
               - asynchronously (reliable)
               - low requirements from storage
             - cluster meta_data persisted
long_term persistency ... storage options
long_term persistency ... storage options

              - shared file system
long_term persistency ... storage options

              - shared file system
                 - no need for locking, etc ...
long_term persistency ... storage options

              - shared file system
                 - no need for locking, etc ...
              - hadoop, using HDFS
long_term persistency ... storage options

              - shared file system
                 - no need for locking, etc ...
              - hadoop, using HDFS
              - cloud (aws_s3, rackspace_cloud_files)
long_term persistency ... node storage
long_term persistency ... node storage

             - considered transient
long_term persistency ... node storage

             - considered transient
                 - can be recovered from gateway
long_term persistency ... node storage

             - considered transient
                 - can be recovered from gateway
             - can be stored on
long_term persistency ... node storage

             - considered transient
                 - can be recovered from gateway
             - can be stored on
                 - local file system
long_term persistency ... node storage

             - considered transient
                 - can be recovered from gateway
             - can be stored on
                 - local file system
                 - heap (jvm) memory
long_term persistency ... node storage

             - considered transient
                 - can be recovered from gateway
             - can be stored on
                 - local file system
                 - heap (jvm) memory
                 - native (os) memory
long_term persistency ... node storage

             - considered transient
                 - can be recovered from gateway
             - can be stored on
                 - local file system
                 - heap (jvm) memory
                 - native (os) memory
                 - fs & memory combination
native cloud support
native cloud support

in the cloud
native cloud support

in the cloud
    machine removed / added more dynamically
native cloud support

   in the cloud
        machine removed / added more dynamically

machine fail more “dynamically”
native cloud support

   in the cloud
        machine removed / added more dynamically

machine fail more “dynamically”

                  local storage is wiped
native cloud support ... storage
native cloud support ... storage

       - local storage is wiped
native cloud support ... storage

       - local storage is wiped
       - use external storage (aws ebs)
native cloud support ... storage

       - local storage is wiped
       - use external storage (aws ebs)
          - needs to be per machine / shard
native cloud support ... storage

       - local storage is wiped
       - use external storage (aws ebs)
          - needs to be per machine / shard
          - can get wiped as well ...
native cloud support ... storage

       - local storage is wiped
       - use external storage (aws ebs)
          - needs to be per machine / shard
          - can get wiped as well ...
          - mmm..., ok, snapshot to aws s3
native cloud support ... storage

       - local storage is wiped
       - use external storage (aws ebs)
          - needs to be per machine / shard
          - can get wiped as well ...
          - mmm..., ok, snapshot to aws s3
       - expensive => ebs & s3
native cloud support ... storage

       - local storage is wiped
       - use external storage (aws ebs)
          - needs to be per machine / shard
          - can get wiped as well ...
          - mmm..., ok, snapshot to aws s3
       - expensive => ebs & s3
       - snapshot interval problematic
native cloud support ... storage

       - local storage is wiped
       - use external storage (aws ebs)
          - needs to be per machine / shard
          - can get wiped as well ...
          - mmm..., ok, snapshot to aws s3
       - expensive => ebs & s3
       - snapshot interval problematic
native cloud support ... the elastic way
native cloud support ... the elastic way

       - use long term persistency
native cloud support ... the elastic way

       - use long term persistency
       - directly into cloud blob storage
native cloud support ... the elastic way

       - use long term persistency
       - directly into cloud blob storage
            - aws s3, rackspace cloud_files
native cloud support ... the elastic way

       - use long term persistency
       - directly into cloud blob storage
            - aws s3, rackspace cloud_files
native cloud support ... the elastic way

       - use long term persistency
       - directly into cloud blob storage
            - aws s3, rackspace cloud_files
       - reliable & asynchronous
native cloud support ... discovery
native cloud support ... discovery

       - no multicast
native cloud support ... discovery

       - no multicast
       - resort to unicast discovery
native cloud support ... discovery

       - no multicast
       - resort to unicast discovery
       - who’s my special nodes ...
native cloud support ... discovery

       - no multicast
       - resort to unicast discovery
       - who’s my special nodes ...
            - require persistent ip’s
native cloud support ... discovery

       - no multicast
       - resort to unicast discovery
       - who’s my special nodes ...
            - require persistent ip’s
            - complicate operations
native cloud support ... the elastic way
native cloud support ... the elastic way

       - discovery support multicast & unicast
native cloud support ... the elastic way

       - discovery support multicast & unicast
       - but also support cloud discovery
native cloud support ... the elastic way

       - discovery support multicast & unicast
       - but also support cloud discovery
            - use cloud_provider API
native cloud support ... the elastic way

       - discovery support multicast & unicast
       - but also support cloud discovery
            - use cloud_provider API
            - ... to get the current list of nodes
ping end_session
ping end_session
  icmq_seq=0 desc=brief overview of elasticsearch
ping end_session
  icmq_seq=0 desc=brief overview of elasticsearch
  icmq_seq=1 version=current version is 0.8
ping end_session
  icmq_seq=0 desc=brief overview of elasticsearch
  icmq_seq=1 version=current version is 0.8
  icmq_seq=2 notice=is beta
ping end_session
  icmq_seq=0 desc=brief overview of elasticsearch
  icmq_seq=1 version=current version is 0.8
  icmq_seq=2 notice=is beta
                     so expect bugs ...
ping end_session
  icmq_seq=0 desc=brief overview of elasticsearch
  icmq_seq=1 version=current version is 0.8
  icmq_seq=2 notice=is beta
                     so expect bugs ...
                     they are actively fixed
ping end_session
  icmq_seq=0 desc=brief overview of elasticsearch
  icmq_seq=1 version=current version is 0.8
  icmq_seq=2 notice=is beta
                     so expect bugs ...
                     they are actively fixed
                     as new features are being added
ping end_session
  icmq_seq=0 desc=brief overview of elasticsearch
  icmq_seq=1 version=current version is 0.8
  icmq_seq=2 notice=is beta
                      so expect bugs ...
                      they are actively fixed
                      as new features are being added
  icmq_seq=3 join=mailing list, suggestions, code
ping end_session
  icmq_seq=0 desc=brief overview of elasticsearch
  icmq_seq=1 version=current version is 0.8
  icmq_seq=2 notice=is beta
                       so expect bugs ...
                       they are actively fixed
                       as new features are being added
  icmq_seq=3 join=mailing list, suggestions, code
  icmq_seq=4 thanks!
ping audience

Contenu connexe

Tendances

Elasticsearch From the Bottom Up
Elasticsearch From the Bottom UpElasticsearch From the Bottom Up
Elasticsearch From the Bottom Upfoundsearch
 
Deep Dive Into Elasticsearch
Deep Dive Into ElasticsearchDeep Dive Into Elasticsearch
Deep Dive Into ElasticsearchKnoldus Inc.
 
Elasticsearch presentation 1
Elasticsearch presentation 1Elasticsearch presentation 1
Elasticsearch presentation 1Maruf Hassan
 
Prometheus (Prometheus London, 2016)
Prometheus (Prometheus London, 2016)Prometheus (Prometheus London, 2016)
Prometheus (Prometheus London, 2016)Brian Brazil
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to ElasticsearchIsmaeel Enjreny
 
Elasticsearch for Data Analytics
Elasticsearch for Data AnalyticsElasticsearch for Data Analytics
Elasticsearch for Data AnalyticsFelipe
 
How Criteo is managing one of the largest Kafka Infrastructure in Europe
How Criteo is managing one of the largest Kafka Infrastructure in EuropeHow Criteo is managing one of the largest Kafka Infrastructure in Europe
How Criteo is managing one of the largest Kafka Infrastructure in EuropeRicardo Paiva
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisArnab Mitra
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderSadayuki Furuhashi
 
Elasticsearch Query DSL - Not just for wizards...
Elasticsearch Query DSL - Not just for wizards...Elasticsearch Query DSL - Not just for wizards...
Elasticsearch Query DSL - Not just for wizards...clintongormley
 
Monitoring Microservices
Monitoring MicroservicesMonitoring Microservices
Monitoring MicroservicesWeaveworks
 
Web Worker, Service Worker and Worklets
Web Worker, Service Worker and WorkletsWeb Worker, Service Worker and Worklets
Web Worker, Service Worker and WorkletsKeshav Gupta
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to ElasticsearchRuslan Zavacky
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcachedJurriaan Persyn
 
Elasticsearch for beginners
Elasticsearch for beginnersElasticsearch for beginners
Elasticsearch for beginnersNeil Baker
 

Tendances (20)

Elasticsearch From the Bottom Up
Elasticsearch From the Bottom UpElasticsearch From the Bottom Up
Elasticsearch From the Bottom Up
 
Deep Dive Into Elasticsearch
Deep Dive Into ElasticsearchDeep Dive Into Elasticsearch
Deep Dive Into Elasticsearch
 
Elasticsearch presentation 1
Elasticsearch presentation 1Elasticsearch presentation 1
Elasticsearch presentation 1
 
Prometheus (Prometheus London, 2016)
Prometheus (Prometheus London, 2016)Prometheus (Prometheus London, 2016)
Prometheus (Prometheus London, 2016)
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
Elasticsearch for Data Analytics
Elasticsearch for Data AnalyticsElasticsearch for Data Analytics
Elasticsearch for Data Analytics
 
How Criteo is managing one of the largest Kafka Infrastructure in Europe
How Criteo is managing one of the largest Kafka Infrastructure in EuropeHow Criteo is managing one of the largest Kafka Infrastructure in Europe
How Criteo is managing one of the largest Kafka Infrastructure in Europe
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loader
 
Elasticsearch Query DSL - Not just for wizards...
Elasticsearch Query DSL - Not just for wizards...Elasticsearch Query DSL - Not just for wizards...
Elasticsearch Query DSL - Not just for wizards...
 
Monitoring Microservices
Monitoring MicroservicesMonitoring Microservices
Monitoring Microservices
 
Typescript ppt
Typescript pptTypescript ppt
Typescript ppt
 
Web Worker, Service Worker and Worklets
Web Worker, Service Worker and WorkletsWeb Worker, Service Worker and Worklets
Web Worker, Service Worker and Worklets
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
The Elastic ELK Stack
The Elastic ELK StackThe Elastic ELK Stack
The Elastic ELK Stack
 
Prometheus Storage
Prometheus StoragePrometheus Storage
Prometheus Storage
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
 
Elasticsearch for beginners
Elasticsearch for beginnersElasticsearch for beginners
Elasticsearch for beginners
 

En vedette

Elasticsearch in 15 minutes
Elasticsearch in 15 minutesElasticsearch in 15 minutes
Elasticsearch in 15 minutesDavid Pilato
 
Using elasticsearch with rails
Using elasticsearch with railsUsing elasticsearch with rails
Using elasticsearch with railsTom Z Zeng
 
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskMODX Беларусь
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Tanya Denisyuk
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...Vyacheslav Nikulin
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyVsevolod Polyakov
 
Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуOlga Lavrentieva
 
Rigid Body Dynamic
Rigid Body DynamicRigid Body Dynamic
Rigid Body DynamicNabeh Wildan
 
Автоматизация анализа логов на базе Elasticsearch
Автоматизация анализа логов на базе ElasticsearchАвтоматизация анализа логов на базе Elasticsearch
Автоматизация анализа логов на базе ElasticsearchPositive Hack Days
 
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийShadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийVyacheslav Nikulin
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с ElasticsearchОмские ИТ-субботники
 
statika struktur "rigid-body"
statika struktur "rigid-body"statika struktur "rigid-body"
statika struktur "rigid-body"Rudi Wicaksana
 
Coordinate system transformation
Coordinate system transformationCoordinate system transformation
Coordinate system transformationTarun Gehlot
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
 
Physics 504 Chapter 9 Uniform Rectilinear Motion
Physics 504 Chapter 9 Uniform Rectilinear MotionPhysics 504 Chapter 9 Uniform Rectilinear Motion
Physics 504 Chapter 9 Uniform Rectilinear MotionNeil MacIntosh
 
Elasticsearch cluster deep dive
Elasticsearch  cluster deep diveElasticsearch  cluster deep dive
Elasticsearch cluster deep diveChristophe Marchal
 
Side by Side with Elasticsearch and Solr
Side by Side with Elasticsearch and SolrSide by Side with Elasticsearch and Solr
Side by Side with Elasticsearch and SolrSematext Group, Inc.
 

En vedette (20)

Elasticsearch in 15 minutes
Elasticsearch in 15 minutesElasticsearch in 15 minutes
Elasticsearch in 15 minutes
 
Using elasticsearch with rails
Using elasticsearch with railsUsing elasticsearch with rails
Using elasticsearch with rails
 
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
Rigid body
Rigid bodyRigid body
Rigid body
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в Grammarly
 
Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайту
 
1 rectilinear
1 rectilinear1 rectilinear
1 rectilinear
 
Rigid Body Dynamic
Rigid Body DynamicRigid Body Dynamic
Rigid Body Dynamic
 
Автоматизация анализа логов на базе Elasticsearch
Автоматизация анализа логов на базе ElasticsearchАвтоматизация анализа логов на базе Elasticsearch
Автоматизация анализа логов на базе Elasticsearch
 
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийShadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
 
statika struktur "rigid-body"
statika struktur "rigid-body"statika struktur "rigid-body"
statika struktur "rigid-body"
 
Coordinate system transformation
Coordinate system transformationCoordinate system transformation
Coordinate system transformation
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
Physics 504 Chapter 9 Uniform Rectilinear Motion
Physics 504 Chapter 9 Uniform Rectilinear MotionPhysics 504 Chapter 9 Uniform Rectilinear Motion
Physics 504 Chapter 9 Uniform Rectilinear Motion
 
Elasticsearch cluster deep dive
Elasticsearch  cluster deep diveElasticsearch  cluster deep dive
Elasticsearch cluster deep dive
 
Side by Side with Elasticsearch and Solr
Side by Side with Elasticsearch and SolrSide by Side with Elasticsearch and Solr
Side by Side with Elasticsearch and Solr
 
Tombstones and Compaction
Tombstones and CompactionTombstones and Compaction
Tombstones and Compaction
 

Similaire à ElasticSearch at berlinbuzzwords 2010

Doing More with MongoDB Aggregation
Doing More with MongoDB AggregationDoing More with MongoDB Aggregation
Doing More with MongoDB AggregationMongoDB
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDBMongoDB
 
Building Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDBBuilding Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDBMongoDB
 
Building Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDBBuilding Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDBMongoDB
 
Building Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDBBuilding Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDBMongoDB
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDBMike Friedman
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDBJeremy Taylor
 
MongoDB .local Munich 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pip...
MongoDB .local Munich 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pip...MongoDB .local Munich 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pip...
MongoDB .local Munich 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pip...MongoDB
 
MongoDB .local Toronto 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
MongoDB .local Toronto 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...MongoDB .local Toronto 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
MongoDB .local Toronto 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...MongoDB
 
MongoDB .local Chicago 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
MongoDB .local Chicago 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...MongoDB .local Chicago 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
MongoDB .local Chicago 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...MongoDB
 
The Aggregation Framework
The Aggregation FrameworkThe Aggregation Framework
The Aggregation FrameworkMongoDB
 
"Powerful Analysis with the Aggregation Pipeline (Tutorial)"
"Powerful Analysis with the Aggregation Pipeline (Tutorial)""Powerful Analysis with the Aggregation Pipeline (Tutorial)"
"Powerful Analysis with the Aggregation Pipeline (Tutorial)"MongoDB
 
Introduction to MongoDB and Hadoop
Introduction to MongoDB and HadoopIntroduction to MongoDB and Hadoop
Introduction to MongoDB and HadoopSteven Francia
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB
 
MongoDB World 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pipeline Em...
MongoDB World 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pipeline Em...MongoDB World 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pipeline Em...
MongoDB World 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pipeline Em...MongoDB
 
Aggregation Framework
Aggregation FrameworkAggregation Framework
Aggregation FrameworkMongoDB
 
Powerful Analysis with the Aggregation Pipeline
Powerful Analysis with the Aggregation PipelinePowerful Analysis with the Aggregation Pipeline
Powerful Analysis with the Aggregation PipelineMongoDB
 
MongoDB .local Bengaluru 2019: Aggregation Pipeline Power++: How MongoDB 4.2 ...
MongoDB .local Bengaluru 2019: Aggregation Pipeline Power++: How MongoDB 4.2 ...MongoDB .local Bengaluru 2019: Aggregation Pipeline Power++: How MongoDB 4.2 ...
MongoDB .local Bengaluru 2019: Aggregation Pipeline Power++: How MongoDB 4.2 ...MongoDB
 

Similaire à ElasticSearch at berlinbuzzwords 2010 (20)

Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Doing More with MongoDB Aggregation
Doing More with MongoDB AggregationDoing More with MongoDB Aggregation
Doing More with MongoDB Aggregation
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDB
 
Building Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDBBuilding Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDB
 
Building Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDBBuilding Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDB
 
Building Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDBBuilding Your First App: An Introduction to MongoDB
Building Your First App: An Introduction to MongoDB
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDB
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDB
 
MongoDB .local Munich 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pip...
MongoDB .local Munich 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pip...MongoDB .local Munich 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pip...
MongoDB .local Munich 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pip...
 
MongoDB .local Toronto 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
MongoDB .local Toronto 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...MongoDB .local Toronto 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
MongoDB .local Toronto 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
 
MongoDB .local Chicago 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
MongoDB .local Chicago 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...MongoDB .local Chicago 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
MongoDB .local Chicago 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pi...
 
The Aggregation Framework
The Aggregation FrameworkThe Aggregation Framework
The Aggregation Framework
 
"Powerful Analysis with the Aggregation Pipeline (Tutorial)"
"Powerful Analysis with the Aggregation Pipeline (Tutorial)""Powerful Analysis with the Aggregation Pipeline (Tutorial)"
"Powerful Analysis with the Aggregation Pipeline (Tutorial)"
 
Introduction to MongoDB and Hadoop
Introduction to MongoDB and HadoopIntroduction to MongoDB and Hadoop
Introduction to MongoDB and Hadoop
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
 
Groovy scripts with Groovy
Groovy scripts with GroovyGroovy scripts with Groovy
Groovy scripts with Groovy
 
MongoDB World 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pipeline Em...
MongoDB World 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pipeline Em...MongoDB World 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pipeline Em...
MongoDB World 2019: Aggregation Pipeline Power++: How MongoDB 4.2 Pipeline Em...
 
Aggregation Framework
Aggregation FrameworkAggregation Framework
Aggregation Framework
 
Powerful Analysis with the Aggregation Pipeline
Powerful Analysis with the Aggregation PipelinePowerful Analysis with the Aggregation Pipeline
Powerful Analysis with the Aggregation Pipeline
 
MongoDB .local Bengaluru 2019: Aggregation Pipeline Power++: How MongoDB 4.2 ...
MongoDB .local Bengaluru 2019: Aggregation Pipeline Power++: How MongoDB 4.2 ...MongoDB .local Bengaluru 2019: Aggregation Pipeline Power++: How MongoDB 4.2 ...
MongoDB .local Bengaluru 2019: Aggregation Pipeline Power++: How MongoDB 4.2 ...
 

Plus de Elasticsearch

An introduction to Elasticsearch's advanced relevance ranking toolbox
An introduction to Elasticsearch's advanced relevance ranking toolboxAn introduction to Elasticsearch's advanced relevance ranking toolbox
An introduction to Elasticsearch's advanced relevance ranking toolboxElasticsearch
 
From MSP to MSSP using Elastic
From MSP to MSSP using ElasticFrom MSP to MSSP using Elastic
From MSP to MSSP using ElasticElasticsearch
 
Cómo crear excelentes experiencias de búsqueda en sitios web
Cómo crear excelentes experiencias de búsqueda en sitios webCómo crear excelentes experiencias de búsqueda en sitios web
Cómo crear excelentes experiencias de búsqueda en sitios webElasticsearch
 
Te damos la bienvenida a una nueva forma de realizar búsquedas
Te damos la bienvenida a una nueva forma de realizar búsquedas Te damos la bienvenida a una nueva forma de realizar búsquedas
Te damos la bienvenida a una nueva forma de realizar búsquedas Elasticsearch
 
Tirez pleinement parti d'Elastic grâce à Elastic Cloud
Tirez pleinement parti d'Elastic grâce à Elastic CloudTirez pleinement parti d'Elastic grâce à Elastic Cloud
Tirez pleinement parti d'Elastic grâce à Elastic CloudElasticsearch
 
Comment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitablesComment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitablesElasticsearch
 
Plongez au cœur de la recherche dans tous ses états.
Plongez au cœur de la recherche dans tous ses états.Plongez au cœur de la recherche dans tous ses états.
Plongez au cœur de la recherche dans tous ses états.Elasticsearch
 
Modernising One Legal Se@rch with Elastic Enterprise Search [Customer Story]
Modernising One Legal Se@rch with Elastic Enterprise Search [Customer Story]Modernising One Legal Se@rch with Elastic Enterprise Search [Customer Story]
Modernising One Legal Se@rch with Elastic Enterprise Search [Customer Story]Elasticsearch
 
An introduction to Elasticsearch's advanced relevance ranking toolbox
An introduction to Elasticsearch's advanced relevance ranking toolboxAn introduction to Elasticsearch's advanced relevance ranking toolbox
An introduction to Elasticsearch's advanced relevance ranking toolboxElasticsearch
 
Welcome to a new state of find
Welcome to a new state of findWelcome to a new state of find
Welcome to a new state of findElasticsearch
 
Building great website search experiences
Building great website search experiencesBuilding great website search experiences
Building great website search experiencesElasticsearch
 
Keynote: Harnessing the power of Elasticsearch for simplified search
Keynote: Harnessing the power of Elasticsearch for simplified searchKeynote: Harnessing the power of Elasticsearch for simplified search
Keynote: Harnessing the power of Elasticsearch for simplified searchElasticsearch
 
Cómo transformar los datos en análisis con los que tomar decisiones
Cómo transformar los datos en análisis con los que tomar decisionesCómo transformar los datos en análisis con los que tomar decisiones
Cómo transformar los datos en análisis con los que tomar decisionesElasticsearch
 
Explore relève les défis Big Data avec Elastic Cloud
Explore relève les défis Big Data avec Elastic Cloud Explore relève les défis Big Data avec Elastic Cloud
Explore relève les défis Big Data avec Elastic Cloud Elasticsearch
 
Comment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitablesComment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitablesElasticsearch
 
Transforming data into actionable insights
Transforming data into actionable insightsTransforming data into actionable insights
Transforming data into actionable insightsElasticsearch
 
Opening Keynote: Why Elastic?
Opening Keynote: Why Elastic?Opening Keynote: Why Elastic?
Opening Keynote: Why Elastic?Elasticsearch
 
Empowering agencies using Elastic as a Service inside Government
Empowering agencies using Elastic as a Service inside GovernmentEmpowering agencies using Elastic as a Service inside Government
Empowering agencies using Elastic as a Service inside GovernmentElasticsearch
 
The opportunities and challenges of data for public good
The opportunities and challenges of data for public goodThe opportunities and challenges of data for public good
The opportunities and challenges of data for public goodElasticsearch
 
Enterprise search and unstructured data with CGI and Elastic
Enterprise search and unstructured data with CGI and ElasticEnterprise search and unstructured data with CGI and Elastic
Enterprise search and unstructured data with CGI and ElasticElasticsearch
 

Plus de Elasticsearch (20)

An introduction to Elasticsearch's advanced relevance ranking toolbox
An introduction to Elasticsearch's advanced relevance ranking toolboxAn introduction to Elasticsearch's advanced relevance ranking toolbox
An introduction to Elasticsearch's advanced relevance ranking toolbox
 
From MSP to MSSP using Elastic
From MSP to MSSP using ElasticFrom MSP to MSSP using Elastic
From MSP to MSSP using Elastic
 
Cómo crear excelentes experiencias de búsqueda en sitios web
Cómo crear excelentes experiencias de búsqueda en sitios webCómo crear excelentes experiencias de búsqueda en sitios web
Cómo crear excelentes experiencias de búsqueda en sitios web
 
Te damos la bienvenida a una nueva forma de realizar búsquedas
Te damos la bienvenida a una nueva forma de realizar búsquedas Te damos la bienvenida a una nueva forma de realizar búsquedas
Te damos la bienvenida a una nueva forma de realizar búsquedas
 
Tirez pleinement parti d'Elastic grâce à Elastic Cloud
Tirez pleinement parti d'Elastic grâce à Elastic CloudTirez pleinement parti d'Elastic grâce à Elastic Cloud
Tirez pleinement parti d'Elastic grâce à Elastic Cloud
 
Comment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitablesComment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitables
 
Plongez au cœur de la recherche dans tous ses états.
Plongez au cœur de la recherche dans tous ses états.Plongez au cœur de la recherche dans tous ses états.
Plongez au cœur de la recherche dans tous ses états.
 
Modernising One Legal Se@rch with Elastic Enterprise Search [Customer Story]
Modernising One Legal Se@rch with Elastic Enterprise Search [Customer Story]Modernising One Legal Se@rch with Elastic Enterprise Search [Customer Story]
Modernising One Legal Se@rch with Elastic Enterprise Search [Customer Story]
 
An introduction to Elasticsearch's advanced relevance ranking toolbox
An introduction to Elasticsearch's advanced relevance ranking toolboxAn introduction to Elasticsearch's advanced relevance ranking toolbox
An introduction to Elasticsearch's advanced relevance ranking toolbox
 
Welcome to a new state of find
Welcome to a new state of findWelcome to a new state of find
Welcome to a new state of find
 
Building great website search experiences
Building great website search experiencesBuilding great website search experiences
Building great website search experiences
 
Keynote: Harnessing the power of Elasticsearch for simplified search
Keynote: Harnessing the power of Elasticsearch for simplified searchKeynote: Harnessing the power of Elasticsearch for simplified search
Keynote: Harnessing the power of Elasticsearch for simplified search
 
Cómo transformar los datos en análisis con los que tomar decisiones
Cómo transformar los datos en análisis con los que tomar decisionesCómo transformar los datos en análisis con los que tomar decisiones
Cómo transformar los datos en análisis con los que tomar decisiones
 
Explore relève les défis Big Data avec Elastic Cloud
Explore relève les défis Big Data avec Elastic Cloud Explore relève les défis Big Data avec Elastic Cloud
Explore relève les défis Big Data avec Elastic Cloud
 
Comment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitablesComment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitables
 
Transforming data into actionable insights
Transforming data into actionable insightsTransforming data into actionable insights
Transforming data into actionable insights
 
Opening Keynote: Why Elastic?
Opening Keynote: Why Elastic?Opening Keynote: Why Elastic?
Opening Keynote: Why Elastic?
 
Empowering agencies using Elastic as a Service inside Government
Empowering agencies using Elastic as a Service inside GovernmentEmpowering agencies using Elastic as a Service inside Government
Empowering agencies using Elastic as a Service inside Government
 
The opportunities and challenges of data for public good
The opportunities and challenges of data for public goodThe opportunities and challenges of data for public good
The opportunities and challenges of data for public good
 
Enterprise search and unstructured data with CGI and Elastic
Enterprise search and unstructured data with CGI and ElasticEnterprise search and unstructured data with CGI and Elastic
Enterprise search and unstructured data with CGI and Elastic
 

Dernier

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Dernier (20)

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

ElasticSearch at berlinbuzzwords 2010

  • 1. You Know, For Search
  • 3. lightning talk kick ass
  • 4. lightning talk kick ass ~joke
  • 6. ping 127.0.0.1 icmq_seq=0 name=shay.banon
  • 7. ping 127.0.0.1 icmq_seq=0 name=shay.banon icmq_seq=1 a.k.a=kimchy
  • 8. ping 127.0.0.1 icmq_seq=0 name=shay.banon icmq_seq=1 a.k.a=kimchy icmq_seq=2 blog=http://kimchy.org
  • 9. ping 127.0.0.1 icmq_seq=0 name=shay.banon icmq_seq=1 a.k.a=kimchy icmq_seq=2 blog=http://kimchy.org icmq_seq=3 twitter=kimchy
  • 11. ping elasticsearch icmq_seq=0 tag=open_source (apache)
  • 12. ping elasticsearch icmq_seq=0 tag=open_source (apache) icmq_seq=1 tag=distributed
  • 13. ping elasticsearch icmq_seq=0 tag=open_source (apache) icmq_seq=1 tag=distributed icmq_seq=2 tag=RESTful
  • 14. ping elasticsearch icmq_seq=0 tag=open_source (apache) icmq_seq=1 tag=distributed icmq_seq=2 tag=RESTful icmq_seq=3 tag=(no_sql) search_engine
  • 15. ping elasticsearch icmq_seq=0 tag=open_source (apache) icmq_seq=1 tag=distributed icmq_seq=2 tag=RESTful icmq_seq=3 tag=(no_sql) search_engine icmq_seq=4 site=http://www.elasticsearch.com
  • 17. open_source apache_2
  • 18. open_source apache_2 http://github.com/elasticsearch/elasticsearch
  • 19. open_source apache_2 http://github.com/elasticsearch/elasticsearch fork, push, send_pull
  • 21. your_data => your_search
  • 22. your_data => your_search a product should natively talk the domain model
  • 23. your_data => your_search a product should natively talk the domain model and not the other way around
  • 24. recipes for good domain model language
  • 25. recipes for good domain model language - document_oriented
  • 26. recipes for good domain model language - document_oriented - schema free
  • 27. recipes for good domain model language - document_oriented - schema free - include json
  • 28. recipes for good domain model language - document_oriented - schema free - include json de_facto open_web standard
  • 29. lets build ourself an amazon store
  • 30. lets build ourself an amazon store (we will get to the cloud laters)
  • 31. first thing we have are books
  • 32. this is how they look like { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }
  • 33. lets index it $ curl -XPUT host:9200/amazon/book/0812504321 -d ‘ { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } } ‘
  • 34. ... `amazon` is the _index name $ curl -XPUT host:9200/amazon/book/0812504321 -d ‘ { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } } ‘
  • 35. ... `book` is the _type $ curl -XPUT host:9200/amazon/book/0812504321 -d ‘ { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } } ‘
  • 36. ... `0812504321` is the _id $ curl -XPUT host:9200/amazon/book/0812504321 -d ‘ { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } } ‘
  • 37. search for all fiction books $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘
  • 38. search for all fiction books $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  • 39. ... number of total hits $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  • 40. ... each hit has the `_index` it came from $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  • 41. ... each hit has the `_type` it belongs to $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  • 42. ... each hit has its `_id` $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  • 43. ... each hit has the actual _source document $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  • 44. ... each hit has the actual _source document $ curl -XGET host:9200/amazon/book/_search?q=tag:fiction‘ {"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"hits": [{"_index":"amazon","_type":"book","_id":"0812504321", "_source" : { "book" : { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", (can be disabled) "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } }}]}}
  • 45. next, we have cds { "cd" : { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } }
  • 46. lets index it as well $ curl -XPUT host:9200/amazon/cd/B00192IV0O -d ‘ { "cd" : { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } } ‘
  • 47. ... same _index, `amazon` $ curl -XPUT host:9200/amazon/cd/B00192IV0O -d ‘ { "cd" : { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } } ‘
  • 48. ... new _type, `cd` $ curl -XPUT host:9200/amazon/cd/B00192IV0O -d ‘ { "cd" : { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } } ‘
  • 49. search for all hip-hop cds $ curl -XGET host:9200/amazon/cd/_search?q=tag:hip-hop‘
  • 51. search across _type(s) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/amazon/cd,book/_search?q=name:call’
  • 52. search across _type(s) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/amazon/cd,book/_search?q=name:call’ search on `_all` types using `name` $ curl -XGET ‘host:9200/amazon/_search?q=name:call’
  • 53. search across _type(s) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/amazon/cd,book/_search?q=name:call’ search on `_all` types using `name` $ curl -XGET ‘host:9200/amazon/_search?q=name:call’ search on specific fields types $ curl -XGET ‘host:9200/amazon/_search?q=book.author.first_name:jack OR cd.artist:jack‘
  • 54. book and cd can be indices as well $ curl -XPUT host:9200/book/info/0812504321 -d ‘ { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } ‘
  • 55. ... `book` is now the _index $ curl -XPUT host:9200/book/info/0812504321 -d ‘ { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } ‘
  • 56. ... `info` is the _type $ curl -XPUT host:9200/book/info/0812504321 -d ‘ { "isbn" : "0812504321", "name" : "Call of the Wild", "author" : { "first_name" : "Jack", "last_name" : "London" }, "pages" : 128, "tag" : ["fiction", "children"] } ‘
  • 57. cd is an index as well $ curl -XPUT host:9200/cd/info/B00192IV0O -d ‘ { "asin" : "B00192IV0O", "name" : "THE E.N.D. (Energy Never Dies)", "artist" : "Black Eyed Peas", "label" : "Interscope", "release_date": "2009-06-09", "tag" : ["hip-hop", "pop-rap"] } ‘
  • 59. search across _index(es) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/cd,book/info/_search?q=name:call’
  • 60. search across _index(es) search on both `cd` and `book` using `name` $ curl -XGET ‘host:9200/cd,book/info/_search?q=name:call’ search on `_all` indices using `name` $ curl -XGET ‘host:9200/_search?q=name:call’
  • 62. query_dsl done with the your_data part
  • 63. query_dsl done with the your_data part => now to the your_search part
  • 64. ... term_query { “term” : { “name” : “call” } }
  • 65. ... term_query, also with type { “term” : { “name” : “call” } } { “term” : { “book.name” : “call” } }
  • 66. ... range_query { “range” : { “pages” : { “from” : 200, “to” : 300 } } }
  • 67. ... range_query, also with type { “range” : { “pages” : { “from” : 200, “to” : 300 } } } { “range” : { “book.pages” : { “from” : 200, “to” : 300 } } }
  • 68. ... many more queries { “prefix” : { “book.name” : “ca” } }
  • 69. ... many more queries { “prefix” : { “book.name” : “ca” } } { “wildcard” : { “book.name” : “c*ll” } }
  • 70. ... many more queries { “prefix” : { { “book.name” : “ca” “field” : { } “book.name” : “+call +wild” } } { } “wildcard” : { “book.name” : “c*ll” } }
  • 71. ... many more queries { “prefix” : { { “book.name” : “ca” “field” : { } “book.name” : “+call +wild” } } { } “wildcard” : { “book.name” : “c*ll” } } { “query_string” : { “query” : “+call +wild” } }
  • 72. ... and, of course, bool_query { “bool” : { “must” : [ { “field” : { “book.name” : “+call +wild” } }, { “range” : { “book.pages” : { “gte” : 200 } } } ], “must_not” : [ { “term” : { “book.author.first_name” : “jack” } } ], “should” : [ { “term” : { “book.author.last_name” : “london” } } ] } }
  • 75. filters faster than queries no scoring cached for even faster access
  • 76. ... sample filters (wrapped as constant_score query) { “constant_score” : { “filter” : { “term” : { “name” : “call” } } } }
  • 77. ... sample filters (wrapped as constant_score query) { “constant_score” : { “filter” : { “term” : { { “name” : “call” “constant_score” : { } “filter” : { } “range” : { } “book.pages” : { } “from” : 100, “to” : 200 } } } } }
  • 78. ... easily combined with queries { “filtered” : { “query” : { “query_string” : { “query” : “+call +wild” } } “filter” : { “range” : { “book.pages” : { “from” : 100, “to” : 200 } } } } }
  • 79. ... easily combined with queries { “filtered” : { “query” : { “query_string” : { “query” : “+call +wild” } } “filter” : { “range” : { “book.pages” : { “from” : 100, “to” : 200 } } } } }
  • 80. ... easily combined with queries { “filtered” : { “query” : { “query_string” : { “query” : “+call +wild” } } “filter” : { “range” : { “book.pages” : { “from” : 100, “to” : 200 } } } } }
  • 81. ... easily combined with queries { “filtered” : { “query” : { “query_string” : { “query” : “+call +wild” } } “filter” : { “range” : { “book.pages” : { “from” : 100, “to” : 200 } } } } }
  • 82. used in a search request $ curl -XPOST ‘host:9200/amazon/cd/_search‘ -d ‘ { “query” : { “field” : { “name” : “+call + wild” } } } ‘
  • 86. other search features highlighting retrieve specific fields facets
  • 87. other search features highlighting retrieve specific fields facets _all field
  • 88. other search features highlighting retrieve specific fields facets _all field scrolling
  • 91. ... start 1st node node 1
  • 92. ... create an index with 2 shards, 1 replica node 1 PUT /amazon { “index.number_of_shards” : 2, “index.number_of_replicas” : 1 }
  • 93. ... create an index with 2 shards, 1 replica node 1 1 PUT /amazon { “index.number_of_shards” : 2, “index.number_of_replicas” : 1 }
  • 94. ... create an index with 2 shards, 1 replica node 1 1 2 PUT /amazon { “index.number_of_shards” : 2, “index.number_of_replicas” : 1 }
  • 95. ... start 2nd node node 1 node 2 1 1 2 2
  • 96. ... start 3rd and 4th node 1 node 2 node 3 node 4 1 1 2 2
  • 97. ... index a document node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/1 { ... }
  • 98. ... index a document => hashed to 1st shard node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/1 { ... }
  • 99. ... index a document => replicated node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/1 { ... }
  • 100. ... index another document node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/2 { ... }
  • 101. ... index another document => hashed to 2nd shard node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/2 { ... }
  • 102. ... index another document => replicated node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon/book/2 { ... }
  • 103. search node 1 node 2 node 3 node 4 1 1 2 2 GET /amazon/_search?q=name:call
  • 104. search => scatter node 1 node 2 node 3 node 4 1 1 2 2 GET /amazon/_search?q=name:call
  • 105. search => gather node 1 node 2 node 3 node 4 1 1 2 2 GET /amazon/_search?q=name:call
  • 106. create another index node 1 node 2 node 3 node 4 1 1 2 2 PUT /amazon2 { “index.number_of_shards” : 1, “index.number_of_replicas” : 1 }
  • 107. create another index node 1 node 2 node 3 node 4 1 1 1 1 2 2 PUT /amazon2 { “index.number_of_shards” : 1, “index.number_of_replicas” : 1 }
  • 108. create another index node 1 node 2 node 3 node 4 1 1 1 1 2 2 almost all settings are index based
  • 110. per document consistency - you index it, its there
  • 111. per document consistency - you index it, its there - no need to commit / flush
  • 112. per document consistency - you index it, its there - no need to commit / flush - uses a transaction log
  • 114. (near) real_time search - automatic, 1 second refresh rate
  • 115. (near) real_time search - automatic, 1 second refresh rate - there’s an api for that
  • 116. (near) real_time search - automatic, 1 second refresh rate - there’s an api for that - POST /_refresh
  • 118. long_term persistency - similar to apple time_machine
  • 119. long_term persistency - similar to apple time_machine - or data_grid write_behind
  • 120. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog
  • 121. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog - to a shared persistent storage
  • 122. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog - to a shared persistent storage - asynchronously (reliable)
  • 123. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog - to a shared persistent storage - asynchronously (reliable) - low requirements from storage
  • 124. long_term persistency - similar to apple time_machine - or data_grid write_behind - write changes to index / translog - to a shared persistent storage - asynchronously (reliable) - low requirements from storage - cluster meta_data persisted
  • 125. long_term persistency ... storage options
  • 126. long_term persistency ... storage options - shared file system
  • 127. long_term persistency ... storage options - shared file system - no need for locking, etc ...
  • 128. long_term persistency ... storage options - shared file system - no need for locking, etc ... - hadoop, using HDFS
  • 129. long_term persistency ... storage options - shared file system - no need for locking, etc ... - hadoop, using HDFS - cloud (aws_s3, rackspace_cloud_files)
  • 130. long_term persistency ... node storage
  • 131. long_term persistency ... node storage - considered transient
  • 132. long_term persistency ... node storage - considered transient - can be recovered from gateway
  • 133. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on
  • 134. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on - local file system
  • 135. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on - local file system - heap (jvm) memory
  • 136. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on - local file system - heap (jvm) memory - native (os) memory
  • 137. long_term persistency ... node storage - considered transient - can be recovered from gateway - can be stored on - local file system - heap (jvm) memory - native (os) memory - fs & memory combination
  • 140. native cloud support in the cloud machine removed / added more dynamically
  • 141. native cloud support in the cloud machine removed / added more dynamically machine fail more “dynamically”
  • 142. native cloud support in the cloud machine removed / added more dynamically machine fail more “dynamically” local storage is wiped
  • 143. native cloud support ... storage
  • 144. native cloud support ... storage - local storage is wiped
  • 145. native cloud support ... storage - local storage is wiped - use external storage (aws ebs)
  • 146. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard
  • 147. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ...
  • 148. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ... - mmm..., ok, snapshot to aws s3
  • 149. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ... - mmm..., ok, snapshot to aws s3 - expensive => ebs & s3
  • 150. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ... - mmm..., ok, snapshot to aws s3 - expensive => ebs & s3 - snapshot interval problematic
  • 151. native cloud support ... storage - local storage is wiped - use external storage (aws ebs) - needs to be per machine / shard - can get wiped as well ... - mmm..., ok, snapshot to aws s3 - expensive => ebs & s3 - snapshot interval problematic
  • 152. native cloud support ... the elastic way
  • 153. native cloud support ... the elastic way - use long term persistency
  • 154. native cloud support ... the elastic way - use long term persistency - directly into cloud blob storage
  • 155. native cloud support ... the elastic way - use long term persistency - directly into cloud blob storage - aws s3, rackspace cloud_files
  • 156. native cloud support ... the elastic way - use long term persistency - directly into cloud blob storage - aws s3, rackspace cloud_files
  • 157. native cloud support ... the elastic way - use long term persistency - directly into cloud blob storage - aws s3, rackspace cloud_files - reliable & asynchronous
  • 158. native cloud support ... discovery
  • 159. native cloud support ... discovery - no multicast
  • 160. native cloud support ... discovery - no multicast - resort to unicast discovery
  • 161. native cloud support ... discovery - no multicast - resort to unicast discovery - who’s my special nodes ...
  • 162. native cloud support ... discovery - no multicast - resort to unicast discovery - who’s my special nodes ... - require persistent ip’s
  • 163. native cloud support ... discovery - no multicast - resort to unicast discovery - who’s my special nodes ... - require persistent ip’s - complicate operations
  • 164. native cloud support ... the elastic way
  • 165. native cloud support ... the elastic way - discovery support multicast & unicast
  • 166. native cloud support ... the elastic way - discovery support multicast & unicast - but also support cloud discovery
  • 167. native cloud support ... the elastic way - discovery support multicast & unicast - but also support cloud discovery - use cloud_provider API
  • 168. native cloud support ... the elastic way - discovery support multicast & unicast - but also support cloud discovery - use cloud_provider API - ... to get the current list of nodes
  • 170. ping end_session icmq_seq=0 desc=brief overview of elasticsearch
  • 171. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8
  • 172. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta
  • 173. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ...
  • 174. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ... they are actively fixed
  • 175. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ... they are actively fixed as new features are being added
  • 176. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ... they are actively fixed as new features are being added icmq_seq=3 join=mailing list, suggestions, code
  • 177. ping end_session icmq_seq=0 desc=brief overview of elasticsearch icmq_seq=1 version=current version is 0.8 icmq_seq=2 notice=is beta so expect bugs ... they are actively fixed as new features are being added icmq_seq=3 join=mailing list, suggestions, code icmq_seq=4 thanks!

Notes de l'éditeur