Elasticsearch Query DSL … not just for wizards Clinton Gormley @clintongormley Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
Copyright Elasticsearch 2014 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
elasticsearch.org/guide Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
elasticsearch Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
elasticsearch real-time Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
elasticsearch real-time distributed Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
elasticsearch real-time distributed search Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
elasticsearch real-time distributed search analytics Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
mapping Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
mapping analysis Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
mapping analysis query dsl Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
mapping analysis query dsl Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
query dsl Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
query dsl flexible, powerful query language Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
queries Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
queries filters Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
queries filters boolean yes/no relevance Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
queries filters boolean yes/no exact values relevance full text Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
queries filters boolean yes/no exact values relevance cached full text not cached Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
queries filters boolean yes/no exact values relevance cached full text faster relevance full text not cached slower Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
queries filters boolean yes/no exact values relevance cached full text faster relevance full text not cached slower Filter first, then query remaining docs Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": {...} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { "match": { "title": "search" }} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { match_all: {}} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { match_all: {}} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { "filtered": { "query": {...}, Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { "filtered": { "query": { "match": { "title": } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { "filtered": { "query": { "match": { "title": "filter": { "term": { "status": "active" }} } 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" }} } 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" }} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
how data is indexed Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": "Quick brown rabbits", { "title": "Quick brown rabbits", "content": "Brown rabbits are commonly seen" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": "Quick brown rabbits", { "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" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
where content like “%brown%fox%” { "title": "Quick brown rabbits", "content": "Brown rabbits are commonly seen" } "title": "Keeping pets healthy", "content": "My quick brown fox eats rabbits on regular basis" where content like “%brown%fox%” a Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
slow & inflexible { "title": "Quick brown rabbits", "content": "Brown rabbits are commonly seen" } "title": "Keeping pets healthy", "content": "My quick brown fox eats rabbits on regular basis" slow & inflexible a Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
“analysis” { "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” Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": "Quick brown rabbits", { "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" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": [quick,brown,rabbits], { "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] Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
field: content sorted list of unique terms Term Doc 1 Doc 2 a are basis brown commonly eats fox my on quick rabbits regular seen sorted list of unique terms Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
field: content where they omyccur Term Doc 1 Doc 2 a are basis brown commonly they eats fox omyccur on quick rabbits regular seen Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
field: content Term Doc 1 Doc 2 a are basis brown commonly eats fox my quick rabbits regular seen Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
field: content Term Doc 1 Doc 2 a are basis brown commonly eats fox my quick rabbits regular seen Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
inverted index Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
inverted index not just for text Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
inverted index numbers, dates, bools, enums geopoints, geoshapes, etc Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field = "value" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field CONTAINS "value" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field CONTAINS "value" term filter Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field CONTAINS "value" "term": { "title": "brown" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { "filtered": { } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { "filtered": { "query": ... }, "filter": } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { "filtered": { "query": { "match_all": {} }, } } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { "filtered": { "query": { "match_all": {} }, } } 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" }} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
field: title Term Doc 1 Doc 2 brown healthy keeping pets quick rabbits Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
field: title Term Doc 1 Doc 2 brown healthy keeping pets quick rabbits Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"term": { "title": "brown" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"term": { "title": "brown" } ➔ result: bitset[ 1, 0 ] 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" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field IN ["val",…] Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field IN ["val",…] terms filter Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field IN ["val",…] "terms": { "title": ["quick", "pets"] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
field: title Term Doc 1 Doc 2 brown healthy keeping pets quick rabbits 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" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field >= "val1" AND < "val2" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field >= "val1" AND field < "val2" range filter Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field >= "val1" AND field < "val2" "range": { "content":{ "gte": "a", "lt": "m" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
field: content Term Doc 1 Doc 2 a are basis brown commonly eats fox my quick rabbits regular seen Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"range": { "content":{ "gte": "a", "lt": "m" } } ➔ result: bitset[ 1, 1 ] ➔ cache as: "content:[a TO m}" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"range": { "date":{ "gte": "2014-‐01-‐01", "lt": "2041-‐02-‐01" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
numeric/date fields optimised for range filters "gte": "2014-‐01-‐01", "lt": "2041-‐02-‐01" } numeric/date fields optimised for range filters Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"range": { "date":{ "gte": "now -‐ 1h" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
not cached "range": { "date":{ "gte": "now -‐ 1h" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
cached "range": { "date":{ "gte": "now -‐ 1h / h" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field IS NOT NULL Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field has any term Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field has any term exists filter Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field has any term "exists": { "field": "title" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field has no term missing filter Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
WHERE field has no term "missing": { "field": "title" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
AND … OR … NOT Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
AND … OR … NOT bool filter Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"bool": { "must": [ <filters> ], "should": "must_not": ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"bool": { "must": [ <filters> ], # AND "should": "must_not": ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"bool": { "must": [ <filters> ], "should": # OR "must_not": ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"bool": { "must": "should": [ <filters> ], "must_not": ] # NOT } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"must": { "term": { "title": "rabbits" }}, "bool": { "must": { "term": { "title": "rabbits" }}, } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"must": { "term": { "title": "rabbits" }}, "should": [ "bool": { "must": { "term": { "title": "rabbits" }}, "should": [ { "term": { "title": "quick" }}, { "term": { "content": "quick" }} ], } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"must": { "term": { "title": "rabbits" }}, "should": [ "bool": { "must": { "term": { "title": "rabbits" }}, "should": [ { "term": { "title": "quick" }}, { "term": { "content": "quick" }} ], "must_not": { "term": { "content": "fox" }} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "term": { "title": "rabbits" }}, { "term": { "content": "rabbits" }} "bool": { "must": [ { "bool": { "should": [ { "term": { "title": "rabbits" }}, { "term": { "content": "rabbits" }} ]}}, { "term": "title": "quick" }}, "content": }} ]}} ], "must_not": { "term": { "content": "fox" }} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
not cached "bool": { "must": [ { "bool": { "should": [ { "term": { "title": "rabbits" }}, { "term": { "content": "rabbits" }} ]}}, { "bool": { "should": [ { "term": { "title": "quick" }}, { "term": { "content": "quick" }} ]}} ], "must_not": { "term": { "content": "fox" }} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
cached "bool": { "must": [ { "bool": { "should": [ { "term": { "title": "rabbits" }}, { "term": { "content": "rabbits" }} ]}}, { "bool": { "should": [ { "term": { "title": "quick" }}, { "term": { "content": "quick" }} ]}} ], "must_not": { "term": { "content": "fox" }} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
(title:rabbits OR content:rabbits) AND result bitset = (title:rabbits OR content:rabbits) AND (title:quick AND NOT content:fox OR content:quick) 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 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
how relevant is this term? Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
how relevant is this term? term query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
how relevant is this term? term query ≈ term filter + relevance how relevant is this term? Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
how relevant is this term? "title": "brown" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
GET /_search { "query": { "term": { "title": "brown" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
how relevant is this doc? { "_index": "myindex", "_type": "_id": "mytype", "1", "_score": 0.5, "_source": { "title": "Quick brown rabbits", "content": "Brown rabbits are commonly seen" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
relevance score Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
relevance score How common is the term in this doc? ➔ more is better Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
relevance score How common is the term in this doc? ➔ more is better How common is the term in ALL docs? ➔ less is better Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
relevance score How 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 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
lucene similarity How 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 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
lucene similarity How 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 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
lucene similarity Term frequency How common is the term in ALL docs? ➔ less is better How long is this doc? ➔ shorter is better Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
lucene similarity Term frequency How common is the term in ALL docs? ➔ less is better How long is this doc? ➔ shorter is better Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
lucene similarity Term frequency Inverse document frequency How long is this doc? ➔ shorter is better Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
lucene similarity Term frequency Inverse document frequency How long is this doc? ➔ shorter is better Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
lucene similarity Term frequency Inverse document frequency Length norm Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
AND … OR … NOT Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
AND … OR … NOT bool query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
like bool filter, but different... bool query like bool filter, but different... AND … OR … NOT Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"bool": { "must": "should": [ <queries> ], # AND "must_not": ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"bool": { "must": "should": [ <queries> ], # AND Hmmm "must_not": ] NOT } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
[ <queries> ], # AND [ <queries> ], # Hmmm "bool": { "must": [ <queries> ], # AND [ <queries> ], # Hmmm "should": "must_not": [ <queries> ], # NOT "minimum_should_match": ? # Hmmm } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
no "must" queries "bool": { "should": [ ] { "term": "title": "quick" }}, "brown" }}, "rabbits" }} } 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" }}, "brown" }}, "rabbits" }} } at least one must match Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
minimum_should_match = 1 no "must" queries "bool": { "should": [ ] { "term": "title": "quick" }}, "brown" }}, "rabbits" }} } minimum_should_match = 1 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
with "must" queries "bool": { "must": { "term": { "title": "quick"}}, "should": [ { "term": { "title": "brown" }}, { "term": { "title": "rabbits" }} ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
with "must" queries all are optional! "bool": { "must": { "term": { "title": "quick"}}, "should": [ { "term": { "title": "brown" }}, { "term": { "title": "rabbits" }} ] } all are optional! Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
minimum_should_match = 0 with "must" queries "bool": { "must": { "term": { "title": "quick"}}, "should": [ { "term": { "title": "brown" }}, { "term": { "title": "rabbits" }} ] } minimum_should_match = 0 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
bool filter ➔ T/F Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
bool filter ➔ T/F query _score Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
_score of bool query = Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
_score of bool query = sum( _score of each query) Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
sum( _score of each query) * num of matching queries _score of bool query = sum( _score of each query) * num of matching queries Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
sum( _score of each query) * num of matching queries / num of queries _score of bool query = sum( _score of each query) * num of matching queries / num of queries Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
more matching should queries Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
better relevance score more matching should queries == better relevance score Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
trim the long tail "bool": { "should": [ ] { "term": "title": "quick" }}, "brown" }}, "rabbits" }} } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
trim the long tail "bool": { "should": [ { "term": "title": "quick" }}, "brown" }}, "rabbits" }} ], "minimum_should_match": "75%" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
trim the long tail "bool": { "should": [ { "term": "title": "quick" }}, "brown" }}, "rabbits" }} ], "minimum_should_match": "75%" # 2 of 3 } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
match query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
match query high level query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
match query high level query understands mapping & analysis Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
match query ➔ analyze query string ➔ rewrite query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
one word query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "match": { "title": "QUICK!" }} Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "match": { "title": "QUICK!" }} title:quick Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "match": { "title": "QUICK!" }} title:quick { "term": Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
multi word query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "match": { "title": "QUICK FOX!" }} Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
title:quick OR title:fox { "match": { "title": "QUICK FOX!" }} title:quick OR title:fox Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
title:quick OR title:fox { "match": { "title": "QUICK FOX!" }} title:quick OR title:fox { "bool": { "should": [ { "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] }} Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
all words must match Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "match": { "title": "QUICK FOX!" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "match": { "title": { "query": "QUICK FOX!", } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "match": { "title": { "query": "QUICK FOX!", "operator": "and" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] } "bool": { "should": [ { "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] } "bool": { "must": [ { "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
trim long tail Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"minimum_should_match": "75%" } { "match": { "title": { "query": "QUICK BROWN FOX!", "minimum_should_match": "75%" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"minimum_should_match": 2 } { "bool": { "should": [ { "term": "title": "quick" }}, "brown" "fox" }} ], "minimum_should_match": 2 } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
fuzzy queries Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
fuzzy queries levenshtein edit distance Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
insertion bron ➔ brown Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
deletion bron ➔ brown foxs ➔ fox Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
substitution bron ➔ brown foxs fox kiuck qiuck Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
transposition bron ➔ brown foxs fox kiuck qiuck quick Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "match": { "title": { "query": "KIUCK BRON FOXS!", "fuzziness": "AUTO" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
phrase / proximity Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"match_phrase": { "title":"QUICK BROWN FOX!" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"match_phrase": { "title": { "query": "BROWN QUICK FOX!", "slop": "10" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
combine queries Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"must": { <min_should_match> }, "should": [ "bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"must": { <min_should_match> }, "should": [ "bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"query": "<words>", "minimum_should_match": "75%" } "title": { "query": "<words>", "minimum_should_match": "75%" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"must": { <min_should_match> }, "should": [ "bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"query": "<words>", "fuzziness": "AUTO" } "match": { "title": { "query": "<words>", "fuzziness": "AUTO" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"must": { <min_should_match> }, "should": [ "bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"match_phrase": { "title": { "query": "<words>", "slop": "10" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"must": { <min_should_match> }, "should": [ "bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
multi-field queries Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
Copyright Elasticsearch 2014 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
easy! Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "match": {"middle": "Kenneth" }}, { "match": {"last": "Dwight" }} ], "bool": { "should": [ { "match": {"first": "Reginald" }}, { "match": {"middle": "Kenneth" }}, { "match": {"last": "Dwight" }} ], "minimum_should_match": "75%" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
Copyright Elasticsearch 2014 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
hard! Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"content": "quick brown fox" }} ] } "bool": { "should": [ { "match": { "title": }}, "quick brown fox" "content": "quick brown fox" }} ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": "Quick brown rabbits", { "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" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
better match { "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 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
But 2 matches wins { "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 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
dis_max query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
dis_max query all docs which match any query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
_score = best matching query dis_max query all docs which match any query _score = best matching query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"content": "quick brown fox" }} ] } "bool": { "should": [ { "match": { "title": }}, "quick brown fox" "content": "quick brown fox" }} ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"content": "quick brown fox" }} ] } "dis_max": { "queries": [ { "match": { "title": }}, "quick brown fox" "content": "quick brown fox" }} ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": "Quick brown rabbits", { "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" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": "Keeping pets healthy", { "title": "Keeping pets healthy", "content": "My quick brown fox eats rabbits on a regular basis" } "title": "Quick brown rabbits", "content": "Brown rabbits are commonly seen" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"content": "quick brown fox" }} ], "tie_breaker": 0.2 } "dis_max": { "queries": [ { "match": { "title": }}, "quick brown fox" "content": "quick brown fox" }} ], "tie_breaker": 0.2 } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
dis_max query all docs which match any query _score = best matching query + tie_breaker * others Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
multi_match query Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
multi_match query match query on multiple fields Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"content": "quick brown fox" }} ], "tie_breaker": 0.2 } "dis_max": { "queries": [ { "match": { "title": }}, "quick brown fox" "content": "quick brown fox" }} ], "tie_breaker": 0.2 } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"multi_match": { "query": "fields": "quick brown fox", [ "title", "content" ] "tie_breaker": 0.2 } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"multi_match": { "query": "fields": "quick brown fox", [ "title", "content" ] "tie_breaker": 0.2, # "type": "best_fields" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
best_fields Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
best_fields find whole "concept" in one field Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
best_fields "quick brown fox" in title or content Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
best_fields "quick brown fox" in title or content dis_max Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": { "type": } "string" Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": { "type": "fields": { "string", }} Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"title": { "type": "fields": { "string", "stemmed": { "string", "analyzer": "english" } }} Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"autocomplete": { "type": "string", "analyzer": "edge_ngrams" }}} "title": { "type": "fields": { "stemmed": { "string", "string", "analyzer": "english" }, "autocomplete": { "type": "string", "analyzer": "edge_ngrams" }}} Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
title: [ brown, fox, jumped ] Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
title: [ brown, fox, jumped ] title.stemmed: [ brown, fox, jump ] 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 ] Copyright Elasti csearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"query": "quick brown fox", "fields": [ "multi_match": { "query": "quick brown fox", "fields": [ "title", "title.stemmed", "title.autocomplete" ] "type": "most_fields" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
most_fields Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
most_fields match same text analyzed in different ways Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
most_fields more matching fields = better Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
most_fields more matching fields = better bool Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
{ "first": "Reginald", "middle": "Kenneth" "last": "Dwight" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"query": "Reginald Kenneth Dwight", "fields": [ "first", "multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"query": "Reginald Kenneth Dwight", "fields": [ "first", "multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] "type": "????" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"query": "Reginald Kenneth Dwight", "fields": [ "first", "multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] "type": "most_fields" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"query": "Reginald Kenneth Dwight", "fields": [ "first", "multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] "type": "most_fields" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
problem Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
problem field centric Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
first: Reginald OR first: Kenneth OR first: Dwight ( middle:Reginald OR middle:Kenneth OR middle:Dwight ) OR ( last: Reginald Kenneth Dwight OR last: ) Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
first: Reginald OR first: Kenneth OR first: Dwight ( middle:Reginald OR middle:Kenneth OR middle:Dwight ) OR ( last: Reginald Kenneth Dwight OR last: ) Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
problem Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
problem operator: and 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 last: AND last: AND last: Reginald Kenneth Dwight ) 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 last: AND last: AND last: Reginald Kenneth Dwight ) Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
problem Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
problem term frequencies Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
problem term frequencies first:dwight ➔ common Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
problem term frequencies first:dwight last: dwight ➔ common ➔ uncommon Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
solution Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
index time solution Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
index time solution single "fullname" field Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"first": { "type": "string" }, "middle": { "last": { } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"first": { "type": "string" }, "middle": { "last": { "full": { } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"type": "string", "copy_to": "full" }, "middle": { "first": { "type": "string", "copy_to": "full" }, "middle": { "last": { "full": { "type": "string" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"full": "Reginald Kenneth Dwight", "minimum_should_match": "75%" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
query time solution Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
query time solution term-centric query 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 last: AND last: AND last: Reginald Kenneth Dwight ) Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
first: Reginald middle:Reginald ( OR OR last: Reginald ) AND ( first: Kenneth OR middle:Kenneth OR last: Kenneth first: Dwight OR middle:Dwight OR last: Dwight ) Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
blend(first,middle,last):Reginald AND blend(first,middle,last):Reginald AND blend(first,middle,last):Kenneth AND blend(first,middle,last):Dwight Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
blends term frequencies blend(first,middle,last):Reginald AND blend(first,middle,last):Kenneth AND blend(first,middle,last):Dwight blends term frequencies Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
cross_fields Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
cross_fields query multiple fields as if they were one Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"query": "Reginald Kenneth Dwight", "fields": [ "first", "multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] "type": "cross_fields" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
"query": "Reginald Kenneth Dwight", "fields": [ "first", "multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] "type": "cross_fields", "minimum_should_match": "75%" } Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
best_fields: most_fields: cross_fields: whole concept in single field same text, different analyzers cross_fields: treat multiple fields as one Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
understand the building blocks Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
the rest is details Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.
thank you @clintongormley 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 Copyright Elasticsearch 2014. Copying, publishing and/or distributing without written permission is strictly prohibited.