Download presentation
Presentation is loading. Please wait.
1
Elasticsearch Query DSL
… not just for wizards Clinton Gormley @clintongormley Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
2
Copyright Elasticsearch 2014
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
3
elasticsearch.org/guide
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
4
elasticsearch Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
5
elasticsearch real-time
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
6
elasticsearch real-time distributed
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
7
elasticsearch real-time distributed search
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
8
elasticsearch real-time distributed search analytics
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
9
mapping Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
10
mapping analysis Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
11
mapping analysis query dsl
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
12
mapping analysis query dsl
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
13
query dsl Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
14
query dsl flexible, powerful query language
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
15
queries Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
16
queries filters Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
17
queries filters boolean yes/no relevance
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
18
queries filters boolean yes/no exact values relevance full text
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
19
queries filters boolean yes/no exact values relevance cached full text
not cached Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
20
queries filters boolean yes/no exact values relevance cached full text
faster relevance full text not cached slower Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
21
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
22
GET /_search Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
23
GET /_search { "query": {...} }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
24
GET /_search { "query": { "match": { "title": "search" }} }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
25
GET /_search { "query": { match_all: {}} }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
26
GET /_search { "query": { match_all: {}} }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
27
GET /_search { "query": { "filtered": { "query": {...},
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
28
GET /_search { "query": { "filtered": { "query": { "match": { "title":
} Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
29
GET /_search { "query": { "filtered": { "query": { "match": { "title":
"filter": { "term": { "status": "active" }} } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
30
GET /_search { "query": { "filtered": { "query": { "match_all": {}},
"filter": { "term": { "status": "active" }} } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
31
GET /_search { "query": { "filtered": { "query": { "match_all": {}},
"filter": { "term": { "status": "active" }} } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
32
how data is indexed Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
33
"title": "Quick brown rabbits",
{ "title": "Quick brown rabbits", "content": "Brown rabbits are commonly seen" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
34
"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 Copying, publishing and/or distributing without written permission is strictly prohibited.
35
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
36
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
37
“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 Copying, publishing and/or distributing without written permission is strictly prohibited.
38
"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 Copying, publishing and/or distributing without written permission is strictly prohibited.
39
"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 Copying, publishing and/or distributing without written permission is strictly prohibited.
40
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
41
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
42
field: content Term Doc 1 Doc 2 a are basis brown commonly eats fox my
quick rabbits regular seen Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
43
field: content Term Doc 1 Doc 2 a are basis brown commonly eats fox my
quick rabbits regular seen Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
44
inverted index Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
45
inverted index not just for text
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
46
inverted index numbers, dates, bools, enums geopoints, geoshapes, etc
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
47
WHERE field = "value" Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
48
WHERE field CONTAINS "value"
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
49
WHERE field CONTAINS "value"
term filter Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
50
WHERE field CONTAINS "value"
"term": { "title": "brown" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
51
GET /_search { "query": { }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
52
GET /_search { "query": { "filtered": { }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
53
GET /_search { "query": { "filtered": { "query": ... }, "filter": }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
54
GET /_search { "query": { "filtered": { "query": { "match_all": {}
}, } } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
55
GET /_search { "query": { "filtered": { "query": { "match_all": {}
}, } } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
56
GET /_search { "query": { "filtered": { "query": { "match_all": {} },
"filter": { "term": { "title": "brown" }} } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
57
field: title Term Doc 1 Doc 2 brown healthy keeping pets quick rabbits
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
58
field: title Term Doc 1 Doc 2 brown healthy keeping pets quick rabbits
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
59
"term": { "title": "brown" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
60
"term": { "title": "brown" } ➔ result: bitset[ 1, 0 ]
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
61
"term": { "title": "brown" } ➔ result: bitset[ 1, 0 ]
➔ cache as: "title:brown" Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
62
WHERE field IN ["val",…] Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
63
WHERE field IN ["val",…] terms filter
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
64
WHERE field IN ["val",…] "terms": { "title": ["quick", "pets"] }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
65
field: title Term Doc 1 Doc 2 brown healthy keeping pets quick rabbits
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
66
"terms": { "title": ["quick","pets"] }
➔ result: bitset[ 1, 1 ] ➔ cache as: "title:quick title:pets" Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
67
WHERE field >= "val1" AND < "val2"
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
68
WHERE field >= "val1" AND field < "val2"
range filter Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
69
WHERE field >= "val1" AND field < "val2"
"range": { "content":{ "gte": "a", "lt": "m" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
70
field: content Term Doc 1 Doc 2 a are basis brown commonly eats fox my
quick rabbits regular seen Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
71
"range": { "content":{ "gte": "a", "lt":
"m" } } ➔ result: bitset[ 1, 1 ] ➔ cache as: "content:[a TO m}" Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
72
"range": { "date":{ "gte": "2014-‐01-‐01", "lt": "2041-‐02-‐01" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
73
numeric/date fields optimised for range filters
"gte": "2014-‐01-‐01", "lt": "2041-‐02-‐01" } numeric/date fields optimised for range filters Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
74
"range": { "date":{ "gte": "now -‐ 1h" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
75
not cached "range": { "date":{ "gte": "now -‐ 1h" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
76
cached "range": { "date":{ "gte": "now -‐ 1h / h" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
77
WHERE field IS NOT NULL Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
78
WHERE field has any term
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
79
WHERE field has any term
exists filter Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
80
WHERE field has any term
"exists": { "field": "title" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
81
WHERE field has no term missing filter
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
82
WHERE field has no term "missing": { "field": "title" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
83
AND … OR … NOT Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
84
AND … OR … NOT bool filter
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
85
"bool": { "must": [ <filters> ], "should": "must_not": ] }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
86
"bool": { "must": [ <filters> ], # AND "should": "must_not": ] }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
87
"bool": { "must": [ <filters> ], "should": # OR "must_not": ] }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
88
"bool": { "must": "should": [ <filters> ], "must_not": ] # NOT }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
89
"must": { "term": { "title": "rabbits" }},
"bool": { "must": { "term": { "title": "rabbits" }}, } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
90
"must": { "term": { "title": "rabbits" }}, "should": [
"bool": { "must": { "term": { "title": "rabbits" }}, "should": [ { "term": { "title": "quick" }}, { "term": { "content": "quick" }} ], } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
91
"must": { "term": { "title": "rabbits" }}, "should": [
"bool": { "must": { "term": { "title": "rabbits" }}, "should": [ { "term": { "title": "quick" }}, { "term": { "content": "quick" }} ], "must_not": { "term": { "content": "fox" }} } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
92
{ "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 Copying, publishing and/or distributing without written permission is strictly prohibited.
93
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
94
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
95
(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 Copying, publishing and/or distributing without written permission is strictly prohibited.
96
filters boolean yes/no exact values cached faster
Filter first, then query Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
97
how relevant is this term?
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
98
how relevant is this term?
term query Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
99
how relevant is this term?
term query ≈ term filter + relevance how relevant is this term? Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
100
how relevant is this term?
"title": "brown" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
101
GET /_search { "query": { }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
102
GET /_search { "query": { "term": { "title": "brown" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
103
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
104
relevance score Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
105
relevance score How common is the term in this doc? ➔ more is better
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
106
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
107
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
108
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
109
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
110
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
111
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
112
lucene similarity Term frequency
Inverse document frequency How long is this doc? ➔ shorter is better Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
113
lucene similarity Term frequency
Inverse document frequency How long is this doc? ➔ shorter is better Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
114
lucene similarity Term frequency
Inverse document frequency Length norm Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
115
AND … OR … NOT Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
116
AND … OR … NOT bool query Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
117
like bool filter, but different...
bool query like bool filter, but different... AND … OR … NOT Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
118
"bool": { "must": "should": [ <queries> ], # AND "must_not": ]
} Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
119
"bool": { "must": "should": [ <queries> ], # AND Hmmm
"must_not": ] NOT } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
120
[ <queries> ], # AND [ <queries> ], # Hmmm
"bool": { "must": [ <queries> ], # AND [ <queries> ], # Hmmm "should": "must_not": [ <queries> ], # NOT "minimum_should_match": ? # Hmmm } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
121
no "must" queries "bool": { "should": [ ] { "term": "title":
"quick" }}, "brown" }}, "rabbits" }} } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
122
no "must" queries at least one must match "bool": { "should": [ ] {
"term": "title": "quick" }}, "brown" }}, "rabbits" }} } at least one must match Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
123
minimum_should_match = 1
no "must" queries "bool": { "should": [ ] { "term": "title": "quick" }}, "brown" }}, "rabbits" }} } minimum_should_match = 1 Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
124
with "must" queries "bool": {
"must": { "term": { "title": "quick"}}, "should": [ { "term": { "title": "brown" }}, { "term": { "title": "rabbits" }} ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
125
with "must" queries all are optional! "bool": {
"must": { "term": { "title": "quick"}}, "should": [ { "term": { "title": "brown" }}, { "term": { "title": "rabbits" }} ] } all are optional! Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
126
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
127
bool filter ➔ T/F Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
128
bool filter ➔ T/F query _score
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
129
_score of bool query = Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
130
_score of bool query = sum( _score of each query)
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
131
sum( _score of each query) * num of matching queries
_score of bool query = sum( _score of each query) * num of matching queries Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
132
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
133
more matching should queries
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
134
better relevance score
more matching should queries == better relevance score Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
135
trim the long tail "bool": { "should": [ ] { "term": "title":
"quick" }}, "brown" }}, "rabbits" }} } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
136
trim the long tail "bool": { "should": [ { "term": "title":
"quick" }}, "brown" }}, "rabbits" }} ], "minimum_should_match": "75%" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
137
trim the long tail "bool": { "should": [ { "term": "title":
"quick" }}, "brown" }}, "rabbits" }} ], "minimum_should_match": "75%" # 2 of 3 } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
138
match query Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
139
match query high level query
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
140
match query high level query understands mapping & analysis
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
141
match query ➔ analyze query string ➔ rewrite query
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
142
one word query Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
143
{ "match": { "title": "QUICK!" }}
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
144
{ "match": { "title": "QUICK!" }} title:quick
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
145
{ "match": { "title": "QUICK!" }} title:quick { "term":
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
146
multi word query Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
147
{ "match": { "title": "QUICK FOX!" }}
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
148
title:quick OR title:fox
{ "match": { "title": "QUICK FOX!" }} title:quick OR title:fox Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
149
title:quick OR title:fox
{ "match": { "title": "QUICK FOX!" }} title:quick OR title:fox { "bool": { "should": [ { "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] }} Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
150
all words must match Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
151
{ "match": { "title": "QUICK FOX!" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
152
{ "match": { "title": { "query": "QUICK FOX!", }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
153
{ "match": { "title": { "query": "QUICK FOX!", "operator": "and" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
154
{ "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] }
"bool": { "should": [ { "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
155
{ "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] }
"bool": { "must": [ { "term": { "title": "quick" }}, { "term": { "title": "fox" }} ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
156
trim long tail Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
157
"minimum_should_match": "75%" }
{ "match": { "title": { "query": "QUICK BROWN FOX!", "minimum_should_match": "75%" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
158
"minimum_should_match": 2 }
{ "bool": { "should": [ { "term": "title": "quick" }}, "brown" "fox" }} ], "minimum_should_match": 2 } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
159
fuzzy queries Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
160
fuzzy queries levenshtein edit distance
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
161
insertion bron ➔ brown Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
162
deletion bron ➔ brown foxs ➔ fox
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
163
substitution bron ➔ brown foxs fox kiuck qiuck
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
164
transposition bron ➔ brown foxs fox kiuck qiuck quick
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
165
{ "match": { "title": { "query": "KIUCK BRON FOXS!",
"fuzziness": "AUTO" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
166
phrase / proximity Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
167
"match_phrase": { "title":"QUICK BROWN FOX!" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
168
"match_phrase": { "title": { "query": "BROWN QUICK FOX!", "slop": "10"
} Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
169
combine queries Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
170
"must": { <min_should_match> }, "should": [
"bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
171
"must": { <min_should_match> }, "should": [
"bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
172
"query": "<words>", "minimum_should_match": "75%" }
"title": { "query": "<words>", "minimum_should_match": "75%" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
173
"must": { <min_should_match> }, "should": [
"bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
174
"query": "<words>", "fuzziness": "AUTO" }
"match": { "title": { "query": "<words>", "fuzziness": "AUTO" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
175
"must": { <min_should_match> }, "should": [
"bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
176
"match_phrase": { "title": { "query": "<words>", "slop": "10" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
177
"must": { <min_should_match> }, "should": [
"bool": { "must": { <min_should_match> }, "should": [ { <fuzzy> <proximity> }, } ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
178
multi-field queries Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
179
Copyright Elasticsearch 2014
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
180
easy! Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
181
{ "match": {"middle": "Kenneth" }}, { "match": {"last": "Dwight" }} ],
"bool": { "should": [ { "match": {"first": "Reginald" }}, { "match": {"middle": "Kenneth" }}, { "match": {"last": "Dwight" }} ], "minimum_should_match": "75%" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
182
Copyright Elasticsearch 2014
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
183
hard! Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
184
"content": "quick brown fox" }} ] }
"bool": { "should": [ { "match": { "title": }}, "quick brown fox" "content": "quick brown fox" }} ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
185
"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 Copying, publishing and/or distributing without written permission is strictly prohibited.
186
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
187
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
188
dis_max query Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
189
dis_max query all docs which match any query
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
190
_score = best matching query
dis_max query all docs which match any query _score = best matching query Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
191
"content": "quick brown fox" }} ] }
"bool": { "should": [ { "match": { "title": }}, "quick brown fox" "content": "quick brown fox" }} ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
192
"content": "quick brown fox" }} ] }
"dis_max": { "queries": [ { "match": { "title": }}, "quick brown fox" "content": "quick brown fox" }} ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
193
"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 Copying, publishing and/or distributing without written permission is strictly prohibited.
194
"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 Copying, publishing and/or distributing without written permission is strictly prohibited.
195
"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 Copying, publishing and/or distributing without written permission is strictly prohibited.
196
dis_max query all docs which match any query
_score = best matching query + tie_breaker * others Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
197
multi_match query Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
198
multi_match query match query on multiple fields
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
199
"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 Copying, publishing and/or distributing without written permission is strictly prohibited.
200
"multi_match": { "query": "fields": "quick brown fox",
[ "title", "content" ] "tie_breaker": 0.2 } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
201
"multi_match": { "query": "fields": "quick brown fox",
[ "title", "content" ] "tie_breaker": 0.2, # "type": "best_fields" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
202
best_fields Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
203
best_fields find whole "concept" in one field
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
204
best_fields "quick brown fox" in title or content
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
205
best_fields "quick brown fox" in title or content dis_max
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
206
"title": { "type": } "string" Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
207
"title": { "type": "fields": { "string", }}
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
208
"title": { "type": "fields": { "string", "stemmed": { "string",
"analyzer": "english" } }} Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
209
"autocomplete": { "type": "string", "analyzer": "edge_ngrams" }}}
"title": { "type": "fields": { "stemmed": { "string", "string", "analyzer": "english" }, "autocomplete": { "type": "string", "analyzer": "edge_ngrams" }}} Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
210
title: [ brown, fox, jumped ]
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
211
title: [ brown, fox, jumped ] title.stemmed: [ brown, fox, jump ]
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
212
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
213
"query": "quick brown fox", "fields": [
"multi_match": { "query": "quick brown fox", "fields": [ "title", "title.stemmed", "title.autocomplete" ] "type": "most_fields" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
214
most_fields Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
215
most_fields match same text analyzed in different ways
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
216
most_fields more matching fields = better
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
217
most_fields more matching fields = better bool
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
218
{ "first": "Reginald", "middle": "Kenneth" "last": "Dwight" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
219
"query": "Reginald Kenneth Dwight", "fields": [ "first",
"multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
220
"query": "Reginald Kenneth Dwight", "fields": [ "first",
"multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] "type": "????" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
221
"query": "Reginald Kenneth Dwight", "fields": [ "first",
"multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] "type": "most_fields" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
222
"query": "Reginald Kenneth Dwight", "fields": [ "first",
"multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] "type": "most_fields" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
223
problem Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
224
problem field centric Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
225
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
226
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
227
problem Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
228
problem operator: and Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
229
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
230
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
231
problem Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
232
problem term frequencies
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
233
problem term frequencies first:dwight ➔ common
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
234
problem term frequencies first:dwight last: dwight ➔ common ➔ uncommon
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
235
solution Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
236
index time solution Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
237
index time solution single "fullname" field
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
238
"first": { "type": "string" }, "middle": { "last": { }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
239
"first": { "type": "string" }, "middle": { "last": { "full": { }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
240
"type": "string", "copy_to": "full" }, "middle": {
"first": { "type": "string", "copy_to": "full" }, "middle": { "last": { "full": { "type": "string" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
241
"full": "Reginald Kenneth Dwight", "minimum_should_match": "75%" }
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
242
query time solution Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
243
query time solution term-centric query
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
244
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
245
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
246
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
247
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 Copying, publishing and/or distributing without written permission is strictly prohibited.
248
cross_fields Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
249
cross_fields query multiple fields as if they were one
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
250
"query": "Reginald Kenneth Dwight", "fields": [ "first",
"multi_match": { "query": "Reginald Kenneth Dwight", "fields": [ "first", "middle", "last" ] "type": "cross_fields" } Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
251
"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 Copying, publishing and/or distributing without written permission is strictly prohibited.
252
best_fields: most_fields: cross_fields: whole concept in single field
same text, different analyzers cross_fields: treat multiple fields as one Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
253
understand the building blocks
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
254
the rest is details Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
255
thank you @clintongormley
Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
256
thank you @clintongormley
elasticsearch.org/downloads elasticsearch.com/support elasticsearch.com/jobs Copyright Elasticsearch Copying, publishing and/or distributing without written permission is strictly prohibited.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.