@@ -47,6 +47,7 @@ data Query =
4747 | QueryExistsQuery FieldName
4848 | QueryTemplateQueryInline TemplateQueryInline
4949 | QueryMatchNoneQuery
50+ | QueryWildcardQuery WildcardQuery
5051 deriving (Eq, Show)
5152
5253instance ToJSON Query where
@@ -147,6 +148,9 @@ instance ToJSON Query where
147148 toJSON (QueryTemplateQueryInline templateQuery) =
148149 object [ "template" .= templateQuery ]
149150
151+ toJSON (QueryWildcardQuery query) =
152+ object [ "wildcard" .= query ]
153+
150154instance FromJSON Query where
151155 parseJSON v = withObject "Query" parse v
152156 where parse o = termQuery `taggedWith` "term"
@@ -176,6 +180,7 @@ instance FromJSON Query where
176180 <|> queryRegexpQuery `taggedWith` "regexp"
177181 <|> querySimpleQueryStringQuery `taggedWith` "simple_query_string"
178182 <|> queryTemplateQueryInline `taggedWith` "template"
183+ <|> queryWildcardQuery `taggedWith` "wildcard"
179184 where taggedWith parser k = parser =<< o .: k
180185 termQuery = fieldTagged $ \(FieldName fn) o ->
181186 TermQuery <$> (Term fn <$> o .: "value") <*> o .:? "boost"
@@ -215,6 +220,7 @@ instance FromJSON Query where
215220 querySimpleQueryStringQuery = pure . QuerySimpleQueryStringQuery
216221 -- queryExistsQuery o = QueryExistsQuery <$> o .: "field"
217222 queryTemplateQueryInline = pure . QueryTemplateQueryInline
223+ queryWildcardQuery = pure . QueryWildcardQuery
218224
219225-- | As of Elastic 2.0, 'Filters' are just 'Queries' housed in a
220226-- Bool Query, and flagged in a different context.
@@ -251,6 +257,26 @@ instance FromJSON RegexpQuery where
251257 <*> o .: "flags"
252258 <*> o .:? "boost"
253259
260+data WildcardQuery =
261+ WildcardQuery { wildcardQueryField :: FieldName
262+ , wildcardQuery :: Text
263+ , wildcardQueryBoost :: Maybe Boost
264+ } deriving (Eq, Show)
265+
266+instance ToJSON WildcardQuery where
267+ toJSON (WildcardQuery (FieldName wcQueryField)
268+ (wcQueryQuery) wcQueryBoost) =
269+ object [ wcQueryField .= omitNulls base ]
270+ where base = [ "value" .= wcQueryQuery
271+ , "boost" .= wcQueryBoost ]
272+
273+instance FromJSON WildcardQuery where
274+ parseJSON = withObject "WildcardQuery" parse
275+ where parse = fieldTagged $ \fn o ->
276+ WildcardQuery fn
277+ <$> o .: "value"
278+ <*> o .:? "boost"
279+
254280data RangeQuery =
255281 RangeQuery { rangeQueryField :: FieldName
256282 , rangeQueryRange :: RangeValue
@@ -1219,7 +1245,7 @@ parseRangeValue mkGt mkLt mkGte mkLte
12191245 (Nothing, Nothing, Nothing, Nothing) ->
12201246 nada
12211247
1222−
1248+
12231249instance FromJSON RangeValue where
12241250 parseJSON = withObject "RangeValue" parse
12251251 where parse o = parseDate o