@@ -47,6 +47,7 @@ data Query =
47 | QueryExistsQuery FieldName
47 | QueryExistsQuery FieldName
48 | QueryTemplateQueryInline TemplateQueryInline
48 | QueryTemplateQueryInline TemplateQueryInline
49 | QueryMatchNoneQuery
49 | QueryMatchNoneQuery
50+ | QueryWildcardQuery WildcardQuery
50 deriving (Eq, Show)
51 deriving (Eq, Show)
52instance ToJSON Query where
53instance ToJSON Query where
@@ -147,6 +148,9 @@ instance ToJSON Query where
147 toJSON (QueryTemplateQueryInline templateQuery) =
148 toJSON (QueryTemplateQueryInline templateQuery) =
148 object [ "template" .= templateQuery ]
149 object [ "template" .= templateQuery ]
151+ toJSON (QueryWildcardQuery query) =
152+ object [ "wildcard" .= query ]
150instance FromJSON Query where
154instance FromJSON Query where
151 parseJSON v = withObject "Query" parse v
155 parseJSON v = withObject "Query" parse v
152 where parse o = termQuery `taggedWith` "term"
156 where parse o = termQuery `taggedWith` "term"
@@ -176,6 +180,7 @@ instance FromJSON Query where
176 <|> queryRegexpQuery `taggedWith` "regexp"
180 <|> queryRegexpQuery `taggedWith` "regexp"
177 <|> querySimpleQueryStringQuery `taggedWith` "simple_query_string"
181 <|> querySimpleQueryStringQuery `taggedWith` "simple_query_string"
178 <|> queryTemplateQueryInline `taggedWith` "template"
182 <|> queryTemplateQueryInline `taggedWith` "template"
183+ <|> queryWildcardQuery `taggedWith` "wildcard"
179 where taggedWith parser k = parser =<< o .: k
184 where taggedWith parser k = parser =<< o .: k
180 termQuery = fieldTagged $ \(FieldName fn) o ->
185 termQuery = fieldTagged $ \(FieldName fn) o ->
181 TermQuery <$> (Term fn <$> o .: "value") <*> o .:? "boost"
186 TermQuery <$> (Term fn <$> o .: "value") <*> o .:? "boost"
@@ -215,6 +220,7 @@ instance FromJSON Query where
215 querySimpleQueryStringQuery = pure . QuerySimpleQueryStringQuery
220 querySimpleQueryStringQuery = pure . QuerySimpleQueryStringQuery
216 -- queryExistsQuery o = QueryExistsQuery <$> o .: "field"
221 -- queryExistsQuery o = QueryExistsQuery <$> o .: "field"
217 queryTemplateQueryInline = pure . QueryTemplateQueryInline
222 queryTemplateQueryInline = pure . QueryTemplateQueryInline
223+ queryWildcardQuery = pure . QueryWildcardQuery
219-- | As of Elastic 2.0, 'Filters' are just 'Queries' housed in a
225-- | As of Elastic 2.0, 'Filters' are just 'Queries' housed in a
220-- Bool Query, and flagged in a different context.
226-- Bool Query, and flagged in a different context.
@@ -251,6 +257,26 @@ instance FromJSON RegexpQuery where
251 <*> o .: "flags"
257 <*> o .: "flags"
252 <*> o .:? "boost"
258 <*> o .:? "boost"
261+ WildcardQuery { wildcardQueryField :: FieldName
262+ , wildcardQuery :: Text
263+ , wildcardQueryBoost :: Maybe Boost
264+ } deriving (Eq, Show)
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 ]
273+instance FromJSON WildcardQuery where
274+ parseJSON = withObject "WildcardQuery" parse
275+ where parse = fieldTagged $ \fn o ->
254data RangeQuery =
280data RangeQuery =
255 RangeQuery { rangeQueryField :: FieldName
281 RangeQuery { rangeQueryField :: FieldName
256 , rangeQueryRange :: RangeValue
282 , rangeQueryRange :: RangeValue
@@ -1219,7 +1245,7 @@ parseRangeValue mkGt mkLt mkGte mkLte
1219 (Nothing, Nothing, Nothing, Nothing) ->
1245 (Nothing, Nothing, Nothing, Nothing) ->
1223instance FromJSON RangeValue where
1249instance FromJSON RangeValue where
1224 parseJSON = withObject "RangeValue" parse
1250 parseJSON = withObject "RangeValue" parse
1225 where parse o = parseDate o
1251 where parse o = parseDate o