Presentation is loading. Please wait.

Presentation is loading. Please wait.

Elasticsearch Query DSL

Similar presentations


Presentation on theme: "Elasticsearch Query DSL"— Presentation transcript:

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.


Download ppt "Elasticsearch Query DSL"

Similar presentations


Ads by Google