Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards....

223
Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited. Clinton Gormley @clintongormley Elasticsearch Query DSL … not just for wizards

Transcript of Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards....

Page 1: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Clinton Gormley @clintongormley

Elasticsearch Query DSL … not just for wizards

Page 2: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Page 3: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

elasticsearch.org/guide

Page 4: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

elasticsearch

Page 5: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

elasticsearch• real-time

Page 6: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

elasticsearch• real-time • distributed

Page 7: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

elasticsearch• real-time • distributed • search

Page 8: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

elasticsearch• real-time • distributed • search • analytics

Page 9: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

mapping

analysis query dsl

Page 10: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

mapping

analysis query dsl

Page 11: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

query dsl

Page 12: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

query dslflexible, powerful query language

Page 13: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

queries• relevance • full text • not cached • slower

filters• boolean yes/no • exact values • cached • faster

Filter first, then query remaining docs

Page 14: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search

Page 15: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {...}  }  

Page 16: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {  "match":  {  "title":  "search"  }}  }  

Page 17: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {  match_all:  {}}  }  

Page 18: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {  match_all:  {}}  }  

Page 19: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {              "query":    {...},              "filter":  {...}          }      }  }  

Page 20: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {              "query":    {  "match":  {  "title":    "search"  }},              "filter":  {...}          }      }  }  

Page 21: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {              "query":    {  "match":  {  "title":    "search"  }},              "filter":  {  "term":    {  "status":  "active"  }}          }      }  }  

Page 22: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {              "query":    {  "match_all":  {}},              "filter":  {  "term":    {  "status":  "active"  }}          }      }  }  

Page 23: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {              "query":    {  "match_all":  {}},              "filter":  {  "term":    {  "status":  "active"  }}          }      }  }  

Page 24: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

how data is indexed

Page 25: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }  !

Page 26: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }  !{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                              regular  basis"  }

Page 27: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }  !{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                              regular  basis"  }

where content like “%brown%fox%”

Page 28: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }  !{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                              regular  basis"  }

slow & inflexible

Page 29: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }  !{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                              regular  basis"  }

“analysis”

Page 30: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }  !{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                              regular  basis"  }

Page 31: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      [quick,brown,rabbits],      "content":  [brown,rabbits,are,commonly,seen]  }  !{      "title":      [keeping,pets,healthy],      "content":  [my,quick,brown,fox,eats,rabbits,on,a,                              regular,basis]  }

Page 32: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term Doc  1 Doc  2aarebasisbrowncommonlyeatsfoxmyonquickrabbitsregularseen

field: content

sorted list of unique terms

Page 33: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term Doc  1 Doc  2aarebasisbrowncommonlyeatsfoxmyonquickrabbitsregularseen

field: content

where they occur

Page 34: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term Doc  1 Doc  2aarebasisbrowncommonlyeatsfoxmyonquickrabbitsregularseen

field: content

Page 35: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term Doc  1 Doc  2aarebasisbrowncommonlyeatsfoxmyonquickrabbitsregularseen

field: content

Page 36: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

inverted index

Page 37: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

inverted indexnot just for text

Page 38: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

inverted indexnumbers, dates, bools, enums

geopoints, geoshapes, etc

Page 39: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  =  "value"

Page 40: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  CONTAINS  "value"

Page 41: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  CONTAINS  "value"

term filter

Page 42: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

   "term":    {              "title":  "brown"        }

WHERE  field  CONTAINS  "value"

Page 43: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {  !!!!    }  }  

Page 44: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {  !!        }      }  }  

Page 45: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {              "query":    {                            ...                          },              "filter":  {                            ...                          }          }      }  }  

Page 46: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {              "query":    {  "match_all":  {}                            },              "filter":  {                            ...                          }          }      }  }  

Page 47: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {              "query":    {  "match_all":  {}                            },              "filter":  {                            ...                          }          }      }  }  

Page 48: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{      "query":  {          "filtered":  {              "query":    {  "match_all":  {}                            },              "filter":  {  "term":    {  "title":  "brown"  }}          }      }  }  

Page 49: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term Doc  1 Doc  2brownhealthykeepingpetsquickrabbits

field: title

Page 50: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term Doc  1 Doc  2brownhealthykeepingpetsquickrabbits

field: title

Page 51: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

   "term":  {  "title":  "brown"  }

➔  result:      bitset[  1,  0  ]

➔  cache  as:  "title:brown"

Page 52: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  IN  ["val",…]

Page 53: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  IN  ["val",…]

terms filter

Page 54: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

   "terms":    {              "title":  ["quick",  "pets"]        }

WHERE  field  IN  ["val",…]

Page 55: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term Doc  1 Doc  2brownhealthykeepingpetsquickrabbits

field: title

Page 56: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

   "terms":  {  "title":  ["quick","pets"]  }

➔  result:      bitset[  1,  1  ]

➔  cache  as:  "title:quick  title:pets"

Page 57: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  >=  "val1"      AND  field  <    "val2"

Page 58: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  >=  "val1"      AND  field  <    "val2"

range filter

Page 59: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

   "range":    {              "content":{                "gte":  "a",                "lt":    "m"            }      }

WHERE  field  >=  "val1"      AND  field  <    "val2"

Page 60: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term Doc  1 Doc  2aarebasisbrowncommonlyeatsfoxmyonquickrabbitsregularseen

field: content

Page 61: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

➔  result:      bitset[  1,  1  ]

➔  cache  as:  "content:[a  TO  m}"

   "range":    {              "content":{  "gte":  "a",  "lt":    "m"  }      }

Page 62: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

 "range":    {              "date":{                  "gte":  "2014-­‐01-­‐01",                "lt":    "2041-­‐02-­‐01"            }      }

Page 63: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

 "range":    {              "date":{                  "gte":  "2014-­‐01-­‐01",                "lt":    "2041-­‐02-­‐01"            }      }

numeric/date fields optimised

for range filters

Page 64: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

 "range":    {              "date":{                  "gte":  "now  -­‐  1h"            }      }

not cached

Page 65: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

 "range":    {              "date":{                  "gte":  "now  -­‐  1h  /  h"            }      }

cached

Page 66: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  IS  NOT  NULL

Page 67: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  has  any  term

Page 68: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

WHERE  field  has  any  term

exists filter

Page 69: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"exists":    {        "field":  "title"  }  

WHERE  field  has  any  term

Page 70: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

missing filter

WHERE  field  has  no  term

Page 71: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"missing":    {        "field":  "title"  }  

WHERE  field  has  no  term

Page 72: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

AND  …  OR  …  NOT

Page 73: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

AND  …  OR  …  NOT

bool filter

Page 74: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":          [  <filters>  ],      "should":      [  <filters>  ],      "must_not":  [  <filters>  ]  }  

Page 75: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":          [  <filters>  ],  #  AND      "should":      [  <filters>  ],      "must_not":  [  <filters>  ]  }  

Page 76: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":          [  <filters>  ],      "should":      [  <filters>  ],  #  OR      "must_not":  [  <filters>  ]  }  

Page 77: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":          [  <filters>  ],      "should":      [  <filters>  ],      "must_not":  [  <filters>  ]    #  NOT  }  

Page 78: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":  {  "term":  {  "title":  "rabbits"  }},  !!!!!}  

Page 79: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":  {  "term":  {  "title":  "rabbits"  }},      "should":  [            {  "term":  {  "title":      "quick"  }},          {  "term":  {  "content":  "quick"  }}      ],  !}  

Page 80: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":  {  "term":  {  "title":  "rabbits"  }},      "should":  [            {  "term":  {  "title":      "quick"  }},          {  "term":  {  "content":  "quick"  }}      ],      "must_not":  {  "term":  {  "content":  "fox"  }}  }  

Page 81: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":  [          {  "bool":    {                "should":  [                    {  "term":  {  "title":      "rabbits"  }},                  {  "term":  {  "content":  "rabbits"  }}          ]}},          {  "bool":    {                "should":  [                    {  "term":  {  "title":      "quick"  }},                  {  "term":  {  "content":  "quick"  }}          ]}}      ],      "must_not":  {  "term":  {  "content":  "fox"  }}  }

Page 82: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":  [          {  "bool":    {                "should":  [                    {  "term":  {  "title":      "rabbits"  }},                  {  "term":  {  "content":  "rabbits"  }}          ]}},          {  "bool":    {                "should":  [                    {  "term":  {  "title":      "quick"  }},                  {  "term":  {  "content":  "quick"  }}          ]}}      ],      "must_not":  {  "term":  {  "content":  "fox"  }}  }

not cached

Page 83: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":  [          {  "bool":    {                "should":  [                    {  "term":  {  "title":      "rabbits"  }},                  {  "term":  {  "content":  "rabbits"  }}          ]}},          {  "bool":    {                "should":  [                    {  "term":  {  "title":      "quick"  }},                  {  "term":  {  "content":  "quick"  }}          ]}}      ],      "must_not":  {  "term":  {  "content":  "fox"  }}  }

cached

Page 84: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

result  bitset  =              !          (title:rabbits  OR  content:rabbits)      AND            (title:quick      OR  content:quick)      AND            NOT  content:fox        

Page 85: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

filters• boolean yes/no • exact values • cached • faster

Filter first, then query

Page 86: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

how relevant is this term?

Page 87: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

how relevant is this term?term query

Page 88: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

≈ term filter + relevance

how relevant is this term?term query

Page 89: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

   "term":    {              "title":  "brown"        }

how relevant is this term?

Page 90: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{        "query":  {  !!!      }  }  

Page 91: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

GET  /_search{        "query":  {              "term":  {                      "title":  "brown"                }        }  }  

Page 92: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{          "_index":  "myindex",          "_type":    "mytype",          "_id":        "1",          "_score":  0.5,          "_source":  {                "title":      "Quick  brown  rabbits",                "content":  "Brown  rabbits  are  commonly  seen"          }  }  

how relevant is this doc?

Page 93: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

relevance scoreHow common is the term in this doc? ➔ more is better

Page 94: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

relevance scoreHow common is the term in this doc? ➔ more is better How common is the term in ALL docs? ➔ less is better

Page 95: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

relevance scoreHow common is the term in this doc? ➔ more is better How common is the term in ALL docs? ➔ less is better How long is this doc? ➔ shorter is better

Page 96: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

lucene similarityHow common is the term in this doc? ➔ more is better How common is the term in ALL docs? ➔ less is better How long is this doc? ➔ shorter is better

Page 97: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

lucene similarityHow common is the term in this doc? ➔ more is better How common is the term in ALL docs? ➔ less is better How long is this doc? ➔ shorter is better

Page 98: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term frequency !

How common is the term in ALL docs? ➔ less is better How long is this doc? ➔ shorter is better

lucene similarity

Page 99: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term frequency !

How common is the term in ALL docs? ➔ less is better How long is this doc? ➔ shorter is better

lucene similarity

Page 100: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term frequency !

Inverse document frequency !

How long is this doc? ➔ shorter is better

lucene similarity

Page 101: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term frequency !

Inverse document frequency !

How long is this doc? ➔ shorter is better

lucene similarity

Page 102: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Term frequency !

Inverse document frequency !

Length norm

lucene similarity

Page 103: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

AND  …  OR  …  NOT

Page 104: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

AND  …  OR  …  NOT

bool query

Page 105: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

like bool filter, but different...

AND  …  OR  …  NOT

bool query

Page 106: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":          [  <queries>  ],  #  AND      "should":      [  <queries>  ],      "must_not":  [  <queries>  ]    #  NOT  }  

Page 107: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":          [  <queries>  ],  #  AND      "should":      [  <queries>  ],  #  Hmmm      "must_not":  [  <queries>  ]    #  NOT  }  

Page 108: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {        "must":          [  <queries>  ],  #  AND      "should":      [  <queries>  ],  #  Hmmm      "must_not":  [  <queries>  ],  #  NOT      "minimum_should_match":  ?    #  Hmmm  }  

Page 109: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

no "must" queries

at least one must match

"bool":    {    "should":      [          {  "term":  {  "title":  "quick"  }},          {  "term":  {  "title":  "brown"  }},          {  "term":  {  "title":  "rabbits"  }}      ]  }

Page 110: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

no "must" queries

minimum_should_match = 1

"bool":    {    "should":      [          {  "term":  {  "title":  "quick"  }},          {  "term":  {  "title":  "brown"  }},          {  "term":  {  "title":  "rabbits"  }}      ]  }

Page 111: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {      "must":  {  "term":  {  "title":  "quick"}},        "should":      [          {  "term":  {  "title":  "brown"  }},          {  "term":  {  "title":  "rabbits"  }}      ]  }  

with "must" queries

all are optional!

Page 112: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":    {      "must":  {  "term":  {  "title":  "quick"}},        "should":      [          {  "term":  {  "title":  "brown"  }},          {  "term":  {  "title":  "rabbits"  }}      ]  }  

with "must" queries

minimum_should_match = 0

Page 113: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

bool  filter  ➔  T/F  !

Page 114: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

bool  filter  ➔  T/F  !

bool  query    ➔  _score

Page 115: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

_score  of  bool  query  =  

Page 116: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

_score  of  bool  query  =        sum(  _score  of  each  query)  

Page 117: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

_score  of  bool  query  =        sum(  _score  of  each  query)        *  num  of  matching  queries  

Page 118: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

_score  of  bool  query  =        sum(  _score  of  each  query)        *  num  of  matching  queries        /  num  of  queries  

Page 119: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

more matching should queries

Page 120: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

more matching should queries ==

better relevance score

Page 121: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

trim the long tail"bool":    {    "should":      [          {  "term":  {  "title":  "quick"  }},          {  "term":  {  "title":  "brown"  }},          {  "term":  {  "title":  "rabbits"  }}      ]  }

Page 122: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

trim the long tail"bool":    {    "should":      [          {  "term":  {  "title":  "quick"  }},          {  "term":  {  "title":  "brown"  }},          {  "term":  {  "title":  "rabbits"  }}      ],      "minimum_should_match":  "75%"  }

Page 123: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

trim the long tail"bool":    {    "should":      [          {  "term":  {  "title":  "quick"  }},          {  "term":  {  "title":  "brown"  }},          {  "term":  {  "title":  "rabbits"  }}      ],      "minimum_should_match":  "75%"  #  2  of  3  }

Page 124: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

match query

Page 125: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

match queryhigh level query

Page 126: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

match queryhigh level query

understands mapping & analysis

Page 127: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

match query➔ analyze query string ➔ rewrite query

Page 128: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

one word query

Page 129: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{  "match":    {  "title":  "QUICK!"  }}

title:quick

{  "term":    {  "title":  "quick"  }}

Page 130: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

multi word query

Page 131: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{  "match":    {  "title":  "QUICK  FOX!"  }}

title:quick  OR  title:fox

{  "bool":  {          "should":  [              {  "term":  {  "title":  "quick"  }},              {  "term":  {  "title":  "fox"      }}          ]  }}  

Page 132: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

all words must match

Page 133: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "match":    {            "title":  "QUICK  FOX!"      }  }

Page 134: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "match":    {            "title":  {              "query":        "QUICK  FOX!",  !        }      }  }

Page 135: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "match":    {            "title":  {              "query":        "QUICK  FOX!",              "operator":  "and"          }      }  }

Page 136: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "bool":  {          "should":  [              {  "term":  {  "title":  "quick"  }},              {  "term":  {  "title":  "fox"      }}          ]      }  }  

Page 137: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "bool":  {          "must":  [              {  "term":  {  "title":  "quick"  }},              {  "term":  {  "title":  "fox"      }}          ]      }  }  

Page 138: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

trim long tail

Page 139: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "match":    {            "title":  {              "query":  "QUICK  BROWN  FOX!",              "minimum_should_match":  "75%"          }      }  }

Page 140: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "bool":  {          "should":  [              {  "term":  {  "title":  "quick"  }},              {  "term":  {  "title":  "brown"  }},              {  "term":  {  "title":  "fox"      }}          ],          "minimum_should_match":  2      }  }  

Page 141: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

fuzzy querieslevenshtein edit distance

Page 142: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

bron      ➔        brown

insertion

Page 143: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

bron      ➔        brown

foxs      ➔        fox

deletion

Page 144: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

bron      ➔        brown

foxs      ➔        fox

kiuck      ➔      qiuck

substitution

Page 145: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

bron      ➔        brown

foxs      ➔        fox

kiuck      ➔      qiuck    ➔    quick

transposition

Page 146: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "match":    {            "title":  {              "query":  "KIUCK  BRON  FOXS!",              "fuzziness":  "AUTO"          }  }

Page 147: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

phrase / proximity

Page 148: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "match_phrase":    {            "title":"QUICK  BROWN  FOX!"      }  }

Page 149: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{        "match_phrase":    {            "title":  {              "query":  "BROWN  QUICK  FOX!",              "slop":    "10"          }      }  }

Page 150: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

combine queries

Page 151: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":  {      "must":  {  <min_should_match>  },      "should":  [                      {            <fuzzy>              },                      {          <proximity>        }      ]  }  

Page 152: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":  {      "must":  {  <min_should_match>  },      "should":  [                      {            <fuzzy>              },                      {          <proximity>        }      ]  }  

Page 153: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

!        "match":  {              "title":  {                  "query":  "<words>",                  "minimum_should_match":  "75%"              }          }  !

Page 154: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":  {      "must":  {  <min_should_match>  },      "should":  [                      {            <fuzzy>              },                      {          <proximity>        }      ]  }  

Page 155: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

!      "match":  {            "title":  {                "query":  "<words>",                "fuzziness":  "AUTO"              }          }  !

Page 156: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":  {      "must":  {  <min_should_match>  },      "should":  [                      {            <fuzzy>              },                      {          <proximity>        }      ]  }  

Page 157: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

!    "match_phrase":  {            "title":  {                "query":  "<words>",                "slop":  "10"            }        }  !

Page 158: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":  {      "must":  {  <min_should_match>  },      "should":  [                      {            <fuzzy>              },                      {          <proximity>        }      ]  }  

Page 159: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

multi-field queries

Page 160: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Page 161: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

easy!

Page 162: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":  {      "should":  [          {  "match":  {"first":    "Reginald"  }},          {  "match":  {"middle":  "Kenneth"    }},          {  "match":  {"last":      "Dwight"      }}          ],          "minimum_should_match":  "75%"  }  

Page 163: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

Page 164: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

hard!

Page 165: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":  {      "should":  [          {  "match":  {                  "title":    "quick  brown  fox"            }},          {  "match":  {                  "content":  "quick  brown  fox"              }}      ]  }

Page 166: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }

{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                                  regular  basis"  }

Page 167: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }

{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                                  regular  basis"  }

better match

Page 168: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }

{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                                  regular  basis"  }

But 2 matches wins

Page 169: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

all docs which match any query

dis_max query

Page 170: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

all docs which match any query

dis_max query

_score  =  best  matching  query

Page 171: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"bool":  {      "should":  [          {  "match":  {                  "title":    "quick  brown  fox"            }},          {  "match":  {                  "content":  "quick  brown  fox"              }}      ]  }

Page 172: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"dis_max":  {      "queries":  [          {  "match":  {                  "title":    "quick  brown  fox"            }},          {  "match":  {                  "content":  "quick  brown  fox"              }}      ]  }

Page 173: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }

{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                                  regular  basis"  }

Page 174: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "title":      "Quick  brown  rabbits",      "content":  "Brown  rabbits  are  commonly  seen"  }

{      "title":      "Keeping  pets  healthy",      "content":  "My  quick  brown  fox  eats  rabbits  on  a                                  regular  basis"  }

Page 175: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"dis_max":  {      "queries":  [          {  "match":  {                  "title":    "quick  brown  fox"            }},          {  "match":  {                  "content":  "quick  brown  fox"              }}      ],      "tie_breaker":  0.2  }

Page 176: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

all docs which match any query

dis_max query

_score  =  best  matching  query    +  tie_breaker  *  others

Page 177: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

multi_match query

Page 178: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

match query on multiple fields

multi_match query

Page 179: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"dis_max":  {      "queries":  [          {  "match":  {                  "title":    "quick  brown  fox"            }},          {  "match":  {                  "content":  "quick  brown  fox"              }}      ],      "tie_breaker":  0.2  }

Page 180: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"multi_match":  {      "query":            "quick  brown  fox",      "fields":      [  "title",  "content"  ]      "tie_breaker":  0.2  }

Page 181: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"multi_match":  {      "query":            "quick  brown  fox",      "fields":      [  "title",  "content"  ]      "tie_breaker":  0.2,  #  "type":              "best_fields"  }

Page 182: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

find whole "concept" in one field

best_fields

Page 183: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"quick brown fox" in title or content

best_fields

Page 184: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

best_fields

dis_max"quick brown fox" in title or content

Page 185: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"title":  {      "type":                  "string"  }  

Page 186: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"title":  {      "type":                  "string",      "fields":  {  !!!!!!!}}

Page 187: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"title":  {      "type":                  "string",      "fields":  {          "stemmed":  {              "type":          "string",              "analyzer":  "english"          }  !!!}}

Page 188: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"title":  {      "type":                  "string",      "fields":  {          "stemmed":  {              "type":          "string",              "analyzer":  "english"          },          "autocomplete":  {              "type":          "string",              "analyzer":  "edge_ngrams"  }}}

Page 189: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

title:      [  brown,  fox,  jumped  ]  !

Page 190: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

title:      [  brown,  fox,  jumped  ]  !title.stemmed:      [  brown,  fox,  jump  ]  !

Page 191: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

title:      [  brown,  fox,  jumped  ]  !title.stemmed:      [  brown,  fox,  jump  ]  !title.autocomplete      [  b,  br,  bro,  brow,  brown,            f,  fo,  fox,          j,  ju,  jum,  jump,  jumpe,  jumped      ]  

Page 192: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"multi_match":  {      "query":            "quick  brown  fox",      "fields":      [                                    "title",                                    "title.stemmed",                                  "title.autocomplete"                              ]      "type":              "most_fields"  }

Page 193: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

most_fieldsmatch same text

analyzed in different ways

Page 194: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

most_fieldsmore matching fields = better

Page 195: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

most_fields

boolmore matching fields = better

Page 196: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

{      "first":    "Reginald",      "middle":  "Kenneth"      "last":      "Dwight"  }

Page 197: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"multi_match":  {      "query":  "Reginald  Kenneth  Dwight",      "fields":      [                                    "first",                                    "middle",                                  "last"                              ]  !}

Page 198: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"multi_match":  {      "query":  "Reginald  Kenneth  Dwight",      "fields":      [                                    "first",                                    "middle",                                  "last"                              ]      "type":              "????"  }

Page 199: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"multi_match":  {      "query":  "Reginald  Kenneth  Dwight",      "fields":      [                                    "first",                                    "middle",                                  "last"                              ]      "type":              "most_fields"  }

Page 200: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

problemfield centric

Page 201: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

(          first:  Reginald        OR    first:  Kenneth        OR    first:  Dwight  )  OR  (              middle:Reginald        OR    middle:Kenneth        OR    middle:Dwight  )  OR  (              last:    Reginald        OR    last:    Kenneth        OR    last:    Dwight  )

Page 202: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

(          first:  Reginald        OR    first:  Kenneth        OR    first:  Dwight  )  OR  (              middle:Reginald        OR    middle:Kenneth        OR    middle:Dwight  )  OR  (              last:    Reginald        OR    last:    Kenneth        OR    last:    Dwight  )

Page 203: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

problemoperator: and

Page 204: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

(          first:  Reginald        AND  first:  Kenneth        AND  first:  Dwight  )  OR  (              middle:Reginald        AND  middle:Kenneth        AND  middle:Dwight  )  OR  (              last:    Reginald        AND  last:    Kenneth        AND  last:    Dwight  )

Page 205: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

(          first:  Reginald        AND  first:  Kenneth        AND  first:  Dwight  )  OR  (              middle:Reginald        AND  middle:Kenneth        AND  middle:Dwight  )  OR  (              last:    Reginald        AND  last:    Kenneth        AND  last:    Dwight  )

Page 206: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

problemterm frequencies

first:dwight    ➔  common  last:  dwight    ➔  uncommon

Page 207: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

solution

Page 208: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

index time solutionsingle "fullname" field

Page 209: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"first":  {            "type":  "string"  },  "middle":  {            "type":  "string"  },  "last":  {            "type":  "string"  }  !

Page 210: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"first":  {            "type":  "string"  },  "middle":  {            "type":  "string"  },  "last":  {            "type":  "string"  },  "full":  {          "type":  "string"    }  !

Page 211: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"first":  {            "type":  "string",  "copy_to":  "full"    },  "middle":  {            "type":  "string",  "copy_to":  "full"    },  "last":  {            "type":  "string",  "copy_to":  "full"    },  "full":  {          "type":  "string"    }  !

Page 212: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"match":  {      "full":  "Reginald  Kenneth  Dwight",      "minimum_should_match":  "75%"  }

Page 213: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

query time solutionterm-centric query

Page 214: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

(          first:  Reginald        AND  first:  Kenneth        AND  first:  Dwight  )  OR  (              middle:Reginald        AND  middle:Kenneth        AND  middle:Dwight  )  OR  (              last:    Reginald        AND  last:    Kenneth        AND  last:    Dwight  )

Page 215: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

(          first:  Reginald        OR    middle:Reginald        OR    last:    Reginald    )  AND  (              first:  Kenneth        OR    middle:Kenneth        OR    last:    Kenneth    )  AND  (              first:  Dwight      OR    middle:Dwight      OR    last:    Dwight  )

Page 216: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

       blend(first,middle,last):Reginald  AND  blend(first,middle,last):Kenneth  AND  blend(first,middle,last):Dwight

blends term frequencies

Page 217: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

cross_fieldsquery multiple fields as if they were one

Page 218: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"multi_match":  {      "query":  "Reginald  Kenneth  Dwight",      "fields":      [                                    "first",                                    "middle",                                  "last"                              ]      "type":              "cross_fields"  }

Page 219: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

"multi_match":  {      "query":  "Reginald  Kenneth  Dwight",      "fields":      [                                    "first",                                    "middle",                                  "last"                              ]      "type":              "cross_fields",      "minimum_should_match":  "75%"  }

Page 220: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

best_fields: whole concept in single field

most_fields: same text, different analyzers

cross_fields: treat multiple fields as one

Page 221: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

understand the building blocks

Page 222: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

the rest is details

Page 223: Elasticsearch Query DSL - Berlin Buzzwords · Elasticsearch Query DSL … not just for wizards. Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written

Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.

thank you@clintongormley

elasticsearch.org/downloads

elasticsearch.com/support

elasticsearch.com/jobs