@@ -1,6 +1,11 @@
1{-# LANGUAGE DeriveGeneric #-}
1{-# LANGUAGE DeriveGeneric #-}
3−{-| Data types for describing actions and data structures performed to interact with Elasticsearch. The two main buckets your queries against Elasticsearch will fall into are 'Query's and 'Filter's. 'Filter's are more like traditional database constraints and often have preferable performance properties. 'Query's support human-written textual queries, such as fuzzy queries.
3+{-| Data types for describing actions and data structures performed to interact
4+ with Elasticsearch. The two main buckets your queries against Elasticsearch
5+ will fall into are 'Query's and 'Filter's. 'Filter's are more like
6+ traditional database constraints and often have preferable performance
7+ properties. 'Query's support human-written textual queries, such as fuzzy
6module Database.Bloodhound.Types
11module Database.Bloodhound.Types
@@ -153,8 +158,8 @@ data Version = Version { number :: Text
153 , build_snapshot :: Bool
158 , build_snapshot :: Bool
154 , lucene_version :: Text } deriving (Eq, Show, Generic)
159 , lucene_version :: Text } deriving (Eq, Show, Generic)
156−{-| 'Status' is a data type for describing the JSON body returned by Elasticsearch when you
161+{-| 'Status' is a data type for describing the JSON body returned by
157− query its status. This was deprecated in 1.2.0.
162+ Elasticsearch when you query its status. This was deprecated in 1.2.0.
159 <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-status.html#indices-status>
164 <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-status.html#indices-status>
@@ -177,7 +182,7 @@ data IndexSettings =
178{-| 'defaultIndexSettings' is an 'IndexSettings' with 3 shards and 2 replicas. -}
183{-| 'defaultIndexSettings' is an 'IndexSettings' with 3 shards and 2 replicas. -}
179defaultIndexSettings :: IndexSettings
184defaultIndexSettings :: IndexSettings
180−defaultIndexSettings = IndexSettings (ShardCount 3) (ReplicaCount 2)
185+defaultIndexSettings = IndexSettings (ShardCount 3) (ReplicaCount 2)
182{-| 'Reply' and 'Method' are type synonyms from 'Network.HTTP.Types.Method' -}
187{-| 'Reply' and 'Method' are type synonyms from 'Network.HTTP.Types.Method' -}
183type Reply = Network.HTTP.Client.Response L.ByteString
188type Reply = Network.HTTP.Client.Response L.ByteString
@@ -204,13 +209,15 @@ data MappingField =
204 MappingField { mappingFieldName :: FieldName
209 MappingField { mappingFieldName :: FieldName
205 , fieldDefinition :: FieldDefinition } deriving (Eq, Show)
210 , fieldDefinition :: FieldDefinition } deriving (Eq, Show)
207−{-| Support for type reification of 'Mapping's is currently incomplete, for now the mapping API verbiage expects a 'ToJSON'able blob. -}
212+{-| Support for type reification of 'Mapping's is currently incomplete, for
213+ now the mapping API verbiage expects a 'ToJSON'able blob.
208data Mapping = Mapping { typeName :: TypeName
215data Mapping = Mapping { typeName :: TypeName
209 , mappingFields :: [MappingField] } deriving (Eq, Show)
216 , mappingFields :: [MappingField] } deriving (Eq, Show)
211−{-| 'BulkOperation' is a sum type for expressing the four kinds of bulk operation index,
218+{-| 'BulkOperation' is a sum type for expressing the four kinds of bulk
212− create, delete, and update. 'BulkIndex' behaves like an "upsert", 'BulkCreate' will fail
219+ operation index, create, delete, and update. 'BulkIndex' behaves like an
213− if a document already exists at the DocId.
220+ "upsert", 'BulkCreate' will fail if a document already exists at the DocId.
215 <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk>
222 <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk>
@@ -220,7 +227,8 @@ data BulkOperation =
220 | BulkDelete IndexName MappingName DocId
227 | BulkDelete IndexName MappingName DocId
221 | BulkUpdate IndexName MappingName DocId Value deriving (Eq, Show)
228 | BulkUpdate IndexName MappingName DocId Value deriving (Eq, Show)
223−{-| 'EsResult' describes the standard wrapper JSON document that you see in successful Elasticsearch responses.
230+{-| 'EsResult' describes the standard wrapper JSON document that you see in
231+ successful Elasticsearch responses.
225data EsResult a = EsResult { _index :: Text
233data EsResult a = EsResult { _index :: Text
226 , _type :: Text
234 , _type :: Text
@@ -229,19 +237,24 @@ data EsResult a = EsResult { _index :: Text
229 , found :: Maybe Bool
237 , found :: Maybe Bool
230 , _source :: a } deriving (Eq, Show)
238 , _source :: a } deriving (Eq, Show)
240+{-| 'Sort' is a synonym for a list of 'SortSpec's. Sort behavior is order
232−{-| 'Sort' is a synonym for a list of 'SortSpec's. Sort behavior is order dependent with later sorts acting as tie-breakers for earlier sorts.
241+ dependent with later sorts acting as tie-breakers for earlier sorts.
234type Sort = [SortSpec]
243type Sort = [SortSpec]
245+{-| The two main kinds of 'SortSpec' are 'DefaultSortSpec' and
246+ 'GeoDistanceSortSpec'. The latter takes a 'SortOrder', 'GeoPoint', and
236−{-| The two main kinds of 'SortSpec' are 'DefaultSortSpec' and 'GeoDistanceSortSpec'. The latter takes a 'SortOrder', 'GeoPoint', and 'DistanceUnit' to express "nearness" to a single geographical point as a sort specification.
247+ 'DistanceUnit' to express "nearness" to a single geographical point as a
238<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>
250<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>
240data SortSpec = DefaultSortSpec DefaultSort
252data SortSpec = DefaultSortSpec DefaultSort
241 | GeoDistanceSortSpec SortOrder GeoPoint DistanceUnit deriving (Eq, Show)
253 | GeoDistanceSortSpec SortOrder GeoPoint DistanceUnit deriving (Eq, Show)
243−{-| 'DefaultSort' is usually the kind of 'SortSpec' you'll want. There's a 'mkSort' convenience
255+{-| 'DefaultSort' is usually the kind of 'SortSpec' you'll want. There's a
244− function for when you want to specify only the most common parameters.
256+ 'mkSort' convenience function for when you want to specify only the most
246<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>
259<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>
@@ -254,14 +267,16 @@ data DefaultSort =
254 , missingSort :: Maybe Missing
267 , missingSort :: Maybe Missing
255 , nestedFilter :: Maybe Filter } deriving (Eq, Show)
268 , nestedFilter :: Maybe Filter } deriving (Eq, Show)
257−{-| 'SortOrder' is 'Ascending' or 'Descending', as you might expect. These get encoded into "asc" or "desc" when turned into JSON.
270+{-| 'SortOrder' is 'Ascending' or 'Descending', as you might expect. These get
271+ encoded into "asc" or "desc" when turned into JSON.
259<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>
273<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>
261data SortOrder = Ascending
275data SortOrder = Ascending
262 | Descending deriving (Eq, Show)
276 | Descending deriving (Eq, Show)
264−{-| 'Missing' prescribes how to handle missing fields. A missing field can be sorted last, first, or using a custom value as a substitute.
278+{-| 'Missing' prescribes how to handle missing fields. A missing field can be
279+ sorted last, first, or using a custom value as a substitute.
266<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#_missing_values>
281<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#_missing_values>
@@ -278,7 +293,8 @@ data SortMode = SortMin
278 | SortSum
293 | SortSum
279 | SortAvg deriving (Eq, Show)
294 | SortAvg deriving (Eq, Show)
296+{-| 'mkSort' defaults everything but the 'FieldName' and the 'SortOrder' so
281−{-| 'mkSort' defaults everything but the 'FieldName' and the 'SortOrder' so that you can concisely describe the usual kind of 'SortSpec's you want.
297+ that you can concisely describe the usual kind of 'SortSpec's you want.
283mkSort :: FieldName -> SortOrder -> DefaultSort
299mkSort :: FieldName -> SortOrder -> DefaultSort
284mkSort fieldName sOrder = DefaultSort fieldName sOrder False Nothing Nothing Nothing
300mkSort fieldName sOrder = DefaultSort fieldName sOrder False Nothing Nothing Nothing
@@ -290,7 +306,8 @@ type Cache = Bool -- caching on/off
290defaultCache :: Cache
306defaultCache :: Cache
291defaultCache = False
307defaultCache = False
293−{-| 'PrefixValue' is used in 'PrefixQuery' as the main query component. -}
309+{-| 'PrefixValue' is used in 'PrefixQuery' as the main query component.
294type PrefixValue = Text
311type PrefixValue = Text
296{-| 'BooleanOperator' is the usual And/Or operators with an ES compatible
313{-| 'BooleanOperator' is the usual And/Or operators with an ES compatible
@@ -298,79 +315,143 @@ type PrefixValue = Text
299data BooleanOperator = And | Or deriving (Eq, Show)
316data BooleanOperator = And | Or deriving (Eq, Show)
301−{-| 'ShardCount' is part of 'IndexSettings' -}
318+{-| 'ShardCount' is part of 'IndexSettings'
302−newtype ShardCount = ShardCount Int deriving (Eq, Show, Generic)
320+newtype ShardCount = ShardCount Int deriving (Eq, Show, Generic)
303−{-| 'ReplicaCount' is part of 'IndexSettings' -}
322+{-| 'ReplicaCount' is part of 'IndexSettings'
304−newtype ReplicaCount = ReplicaCount Int deriving (Eq, Show, Generic)
324+newtype ReplicaCount = ReplicaCount Int deriving (Eq, Show, Generic)
305−{-| 'Server' is used with the client functions to point at the ES instance -}
326+{-| 'Server' is used with the client functions to point at the ES instance
306−newtype Server = Server String deriving (Eq, Show)
328+newtype Server = Server String deriving (Eq, Show)
307−{-| 'IndexName' is used to describe which index to query/create/delete -}
330+{-| 'IndexName' is used to describe which index to query/create/delete
308−newtype IndexName = IndexName String deriving (Eq, Generic, Show)
332+newtype IndexName = IndexName String deriving (Eq, Generic, Show)
309{-| 'MappingName' is part of mappings which are how ES describes and schematizes
334{-| 'MappingName' is part of mappings which are how ES describes and schematizes
310− the data in the indices. -}
335+ the data in the indices.
311−newtype MappingName = MappingName String deriving (Eq, Generic, Show)
337+newtype MappingName = MappingName String deriving (Eq, Generic, Show)
312−{-| 'DocId' is a generic wrapper value for expressing unique Document IDs. Can be set
339+{-| 'DocId' is a generic wrapper value for expressing unique Document IDs.
313− by the user or created by ES itself. Often used in client functions for poking
340+ Can be set by the user or created by ES itself. Often used in client
314− at specific documents. -}
341+ functions for poking at specific documents.
315−newtype DocId = DocId String deriving (Eq, Generic, Show)
343+newtype DocId = DocId String deriving (Eq, Generic, Show)
316−{-| 'QueryString' is used to wrap query text bodies, be they human written or not. -}
345+{-| 'QueryString' is used to wrap query text bodies, be they human written or not.
317−newtype QueryString = QueryString Text deriving (Eq, Generic, Show)
347+newtype QueryString = QueryString Text deriving (Eq, Generic, Show)
318{-| 'FieldName' is used all over the place wherever a specific field within
349{-| 'FieldName' is used all over the place wherever a specific field within
319− a document needs to be specified, usually in 'Query's or 'Filter's. -}
350+ a document needs to be specified, usually in 'Query's or 'Filter's.
320−newtype FieldName = FieldName Text deriving (Eq, Show)
352+newtype FieldName = FieldName Text deriving (Eq, Show)
321{-| 'CacheName' is used in 'RegexpQuery' and 'RegexpFilter' for describing the
354{-| 'CacheName' is used in 'RegexpQuery' and 'RegexpFilter' for describing the
322− 'CacheKey' keyed caching behavior. -}
355+ 'CacheKey' keyed caching behavior.
323−newtype CacheName = CacheName Text deriving (Eq, Show)
357+newtype CacheName = CacheName Text deriving (Eq, Show)
324{-| 'CacheKey' is used in 'RegexpQuery' and 'RegexpFilter' to key regex
359{-| 'CacheKey' is used in 'RegexpQuery' and 'RegexpFilter' to key regex
325− caching behavior. -}
360+ caching behavior.
326−newtype CacheKey = CacheKey Text deriving (Eq, Show)
362+newtype CacheKey =
363+ CacheKey Text deriving (Eq, Show)
327−newtype Existence = Existence Bool deriving (Eq, Show)
365+ Existence Bool deriving (Eq, Show)
328−newtype NullValue = NullValue Bool deriving (Eq, Show)
367+ NullValue Bool deriving (Eq, Show)
368+newtype CutoffFrequency =
329−newtype CutoffFrequency = CutoffFrequency Double deriving (Eq, Show, Generic)
369+ CutoffFrequency Double deriving (Eq, Show, Generic)
330−newtype Analyzer = Analyzer Text deriving (Eq, Show, Generic)
371+ Analyzer Text deriving (Eq, Show, Generic)
372+newtype MaxExpansions =
331−newtype MaxExpansions = MaxExpansions Int deriving (Eq, Show, Generic)
373+ MaxExpansions Int deriving (Eq, Show, Generic)
332{-| 'Lenient', if set to true, will cause format based failures to be
375{-| 'Lenient', if set to true, will cause format based failures to be
333 ignored. I don't know what the bloody default is, Elasticsearch
376 ignored. I don't know what the bloody default is, Elasticsearch
334− documentation didn't say what it was. Let me know if you figure it out. -}
377+ documentation didn't say what it was. Let me know if you figure it out.
335−newtype Lenient = Lenient Bool deriving (Eq, Show, Generic)
380+ Lenient Bool deriving (Eq, Show, Generic)
336−newtype Tiebreaker = Tiebreaker Double deriving (Eq, Show, Generic)
382+ Tiebreaker Double deriving (Eq, Show, Generic)
337−newtype Boost = Boost Double deriving (Eq, Show, Generic)
384+ Boost Double deriving (Eq, Show, Generic)
338−newtype BoostTerms = BoostTerms Double deriving (Eq, Show, Generic)
386+ BoostTerms Double deriving (Eq, Show, Generic)
339−{-| 'MinimumMatch' controls how many should clauses in the bool query should match.
388+{-| 'MinimumMatch' controls how many should clauses in the bool query should
340− Can be an absolute value (2) or a percentage (30%) or a combination of both. -}
389+ match. Can be an absolute value (2) or a percentage (30%) or a
390+ combination of both.
392+newtype MinimumMatch =
341−newtype MinimumMatch = MinimumMatch Int deriving (Eq, Show, Generic)
393+ MinimumMatch Int deriving (Eq, Show, Generic)
394+newtype MinimumMatchText =
342−newtype MinimumMatchText = MinimumMatchText Text deriving (Eq, Show)
395+ MinimumMatchText Text deriving (Eq, Show)
396+newtype DisableCoord =
343−newtype DisableCoord = DisableCoord Bool deriving (Eq, Show, Generic)
397+ DisableCoord Bool deriving (Eq, Show, Generic)
398+newtype IgnoreTermFrequency =
344−newtype IgnoreTermFrequency = IgnoreTermFrequency Bool deriving (Eq, Show, Generic)
399+ IgnoreTermFrequency Bool deriving (Eq, Show, Generic)
400+newtype MinimumTermFrequency =
345−newtype MinimumTermFrequency = MinimumTermFrequency Int deriving (Eq, Show, Generic)
401+ MinimumTermFrequency Int deriving (Eq, Show, Generic)
402+newtype MaxQueryTerms =
346−newtype MaxQueryTerms = MaxQueryTerms Int deriving (Eq, Show, Generic)
403+ MaxQueryTerms Int deriving (Eq, Show, Generic)
347−newtype Fuzziness = Fuzziness Double deriving (Eq, Show, Generic)
405+ Fuzziness Double deriving (Eq, Show, Generic)
348{-| 'PrefixLength' is the prefix length used in queries, defaults to 0. -}
407{-| 'PrefixLength' is the prefix length used in queries, defaults to 0. -}
408+newtype PrefixLength =
349−newtype PrefixLength = PrefixLength Int deriving (Eq, Show, Generic)
409+ PrefixLength Int deriving (Eq, Show, Generic)
350−newtype TypeName = TypeName Text deriving (Eq, Show, Generic)
411+ TypeName Text deriving (Eq, Show, Generic)
412+newtype PercentMatch =
351−newtype PercentMatch = PercentMatch Double deriving (Eq, Show, Generic)
413+ PercentMatch Double deriving (Eq, Show, Generic)
352−newtype StopWord = StopWord Text deriving (Eq, Show, Generic)
415+ StopWord Text deriving (Eq, Show, Generic)
353−newtype QueryPath = QueryPath Text deriving (Eq, Show, Generic)
417+ QueryPath Text deriving (Eq, Show, Generic)
354−{-| Allowing a wildcard at the beginning of a word (eg "*ing") is particularly heavy, because all terms in the index need to be examined, just in case they match. Leading wildcards can be disabled by setting 'AllowLeadingWildcard' to false. -}
419+{-| Allowing a wildcard at the beginning of a word (eg "*ing") is particularly
420+ heavy, because all terms in the index need to be examined, just in case
421+ they match. Leading wildcards can be disabled by setting
422+ 'AllowLeadingWildcard' to false. -}
355−newtype AllowLeadingWildcard = AllowLeadingWildcard Bool deriving (Eq, Show, Generic)
423+newtype AllowLeadingWildcard =
424+ AllowLeadingWildcard Bool deriving (Eq, Show, Generic)
356−newtype LowercaseExpanded = LowercaseExpanded Bool deriving (Eq, Show, Generic)
425+newtype LowercaseExpanded =
426+ LowercaseExpanded Bool deriving (Eq, Show, Generic)
427+newtype EnablePositionIncrements =
357−newtype EnablePositionIncrements = EnablePositionIncrements Bool deriving (Eq, Show, Generic)
428+ EnablePositionIncrements Bool deriving (Eq, Show, Generic)
358{-| By default, wildcard terms in a query are not analyzed.
430{-| By default, wildcard terms in a query are not analyzed.
359− Setting 'AnalyzeWildcard' to true enables best-effort analysis. -}
431+ Setting 'AnalyzeWildcard' to true enables best-effort analysis.
360−newtype AnalyzeWildcard = AnalyzeWildcard Bool deriving (Eq, Show, Generic)
433+newtype AnalyzeWildcard = AnalyzeWildcard Bool deriving (Eq, Show, Generic)
361−{-| 'GeneratePhraseQueries' defaults to false. -}
435+{-| 'GeneratePhraseQueries' defaults to false.
437+newtype GeneratePhraseQueries =
362−newtype GeneratePhraseQueries = GeneratePhraseQueries Bool deriving (Eq, Show, Generic)
438+ GeneratePhraseQueries Bool deriving (Eq, Show, Generic)
363−{-| 'Locale' is used for string conversions - defaults to ROOT. -}
440+{-| 'Locale' is used for string conversions - defaults to ROOT.
364−newtype Locale = Locale Text deriving (Eq, Show, Generic)
442+newtype Locale = Locale Text deriving (Eq, Show, Generic)
365−newtype MaxWordLength = MaxWordLength Int deriving (Eq, Show, Generic)
443+newtype MaxWordLength = MaxWordLength Int deriving (Eq, Show, Generic)
366−newtype MinWordLength = MinWordLength Int deriving (Eq, Show, Generic)
444+newtype MinWordLength = MinWordLength Int deriving (Eq, Show, Generic)
367{-| 'PhraseSlop' sets the default slop for phrases, 0 means exact
446{-| 'PhraseSlop' sets the default slop for phrases, 0 means exact
368− phrase matches. Default is 0. -}
447+ phrase matches. Default is 0.
369−newtype PhraseSlop = PhraseSlop Int deriving (Eq, Show, Generic)
449+newtype PhraseSlop = PhraseSlop Int deriving (Eq, Show, Generic)
370−newtype MinDocFrequency = MinDocFrequency Int deriving (Eq, Show, Generic)
450+newtype MinDocFrequency = MinDocFrequency Int deriving (Eq, Show, Generic)
371−newtype MaxDocFrequency = MaxDocFrequency Int deriving (Eq, Show, Generic)
451+newtype MaxDocFrequency = MaxDocFrequency Int deriving (Eq, Show, Generic)
373−{-| 'unpackId' is a silly convenience function that gets used once. -}
453+{-| 'unpackId' is a silly convenience function that gets used once.
374unpackId :: DocId -> String
455unpackId :: DocId -> String
375unpackId (DocId docId) = docId
456unpackId (DocId docId) = docId
@@ -433,14 +514,15 @@ mkRangeQuery :: FieldName -> Either HalfRange Range -> RangeQuery
433mkRangeQuery f r = RangeQuery f r (Boost 1.0)
514mkRangeQuery f r = RangeQuery f r (Boost 1.0)
435data SimpleQueryStringQuery =
516data SimpleQueryStringQuery =
517+ SimpleQueryStringQuery
436− SimpleQueryStringQuery { simpleQueryStringQuery :: QueryString
518+ { simpleQueryStringQuery :: QueryString
437− , simpleQueryStringField :: Maybe FieldOrFields
519+ , simpleQueryStringField :: Maybe FieldOrFields
438− , simpleQueryStringOperator :: Maybe BooleanOperator
520+ , simpleQueryStringOperator :: Maybe BooleanOperator
439− , simpleQueryStringAnalyzer :: Maybe Analyzer
521+ , simpleQueryStringAnalyzer :: Maybe Analyzer
440− , simpleQueryStringFlags :: Maybe [SimpleQueryFlag]
522+ , simpleQueryStringFlags :: Maybe [SimpleQueryFlag]
441− , simpleQueryStringLowercaseExpanded :: Maybe LowercaseExpanded
523+ , simpleQueryStringLowercaseExpanded :: Maybe LowercaseExpanded
442− , simpleQueryStringLocale :: Maybe Locale
524+ , simpleQueryStringLocale :: Maybe Locale
443− } deriving (Eq, Show)
525+ } deriving (Eq, Show)
445data SimpleQueryFlag =
527data SimpleQueryFlag =
446 SimpleQueryAll
528 SimpleQueryAll
@@ -458,141 +540,156 @@ data SimpleQueryFlag =
459-- use_dis_max and tie_breaker when fields are plural?
541-- use_dis_max and tie_breaker when fields are plural?
460data QueryStringQuery =
542data QueryStringQuery =
461− QueryStringQuery { queryStringQuery :: QueryString
544+ { queryStringQuery :: QueryString
462− , queryStringDefaultField :: Maybe FieldName
545+ , queryStringDefaultField :: Maybe FieldName
463− , queryStringOperator :: Maybe BooleanOperator
546+ , queryStringOperator :: Maybe BooleanOperator
464− , queryStringAnalyzer :: Maybe Analyzer
547+ , queryStringAnalyzer :: Maybe Analyzer
465− , queryStringAllowLeadingWildcard :: Maybe AllowLeadingWildcard
548+ , queryStringAllowLeadingWildcard :: Maybe AllowLeadingWildcard
466− , queryStringLowercaseExpanded :: Maybe LowercaseExpanded
549+ , queryStringLowercaseExpanded :: Maybe LowercaseExpanded
467− , queryStringEnablePositionIncrements :: Maybe EnablePositionIncrements
550+ , queryStringEnablePositionIncrements :: Maybe EnablePositionIncrements
468− , queryStringFuzzyMaxExpansions :: Maybe MaxExpansions
551+ , queryStringFuzzyMaxExpansions :: Maybe MaxExpansions
469− , queryStringFuzziness :: Maybe Fuzziness
552+ , queryStringFuzziness :: Maybe Fuzziness
470− , queryStringFuzzyPrefixLength :: Maybe PrefixLength
553+ , queryStringFuzzyPrefixLength :: Maybe PrefixLength
471− , queryStringPhraseSlop :: Maybe PhraseSlop
554+ , queryStringPhraseSlop :: Maybe PhraseSlop
472− , queryStringBoost :: Maybe Boost
555+ , queryStringBoost :: Maybe Boost
473− , queryStringAnalyzeWildcard :: Maybe AnalyzeWildcard
556+ , queryStringAnalyzeWildcard :: Maybe AnalyzeWildcard
474− , queryStringGeneratePhraseQueries :: Maybe GeneratePhraseQueries
557+ , queryStringGeneratePhraseQueries :: Maybe GeneratePhraseQueries
475− , queryStringMinimumShouldMatch :: Maybe MinimumMatch
558+ , queryStringMinimumShouldMatch :: Maybe MinimumMatch
476− , queryStringLenient :: Maybe Lenient
559+ , queryStringLenient :: Maybe Lenient
477− , queryStringLocale :: Maybe Locale
560+ , queryStringLocale :: Maybe Locale
478− } deriving (Eq, Show)
561+ } deriving (Eq, Show)
480mkQueryStringQuery :: QueryString -> QueryStringQuery
563mkQueryStringQuery :: QueryString -> QueryStringQuery
564+mkQueryStringQuery qs =
481−mkQueryStringQuery qs = QueryStringQuery qs Nothing Nothing
565+ QueryStringQuery qs Nothing Nothing
482− Nothing Nothing Nothing Nothing
566+ Nothing Nothing Nothing Nothing
483− Nothing Nothing Nothing Nothing
567+ Nothing Nothing Nothing Nothing
484− Nothing Nothing Nothing Nothing
568+ Nothing Nothing Nothing Nothing
485− Nothing Nothing
569+ Nothing Nothing
487−data FieldOrFields = FofField FieldName
571+data FieldOrFields = FofField FieldName
488 | FofFields [FieldName] deriving (Eq, Show)
572 | FofFields [FieldName] deriving (Eq, Show)
490data PrefixQuery =
574data PrefixQuery =
491− PrefixQuery { prefixQueryField :: FieldName
576+ { prefixQueryField :: FieldName
492− , prefixQueryPrefixValue :: Text
577+ , prefixQueryPrefixValue :: Text
493− , prefixQueryBoost :: Maybe Boost } deriving (Eq, Show)
578+ , prefixQueryBoost :: Maybe Boost } deriving (Eq, Show)
495data NestedQuery =
580data NestedQuery =
496− NestedQuery { nestedQueryPath :: QueryPath
582+ { nestedQueryPath :: QueryPath
497− , nestedQueryScoreType :: ScoreType
583+ , nestedQueryScoreType :: ScoreType
498− , nestedQuery :: Query } deriving (Eq, Show)
584+ , nestedQuery :: Query } deriving (Eq, Show)
500data MoreLikeThisFieldQuery =
586data MoreLikeThisFieldQuery =
587+ MoreLikeThisFieldQuery
501− MoreLikeThisFieldQuery { moreLikeThisFieldText :: Text
588+ { moreLikeThisFieldText :: Text
502− , moreLikeThisFieldFields :: FieldName
589+ , moreLikeThisFieldFields :: FieldName
503− -- default 0.3 (30%)
590+ -- default 0.3 (30%)
504− , moreLikeThisFieldPercentMatch :: Maybe PercentMatch
591+ , moreLikeThisFieldPercentMatch :: Maybe PercentMatch
505− , moreLikeThisFieldMinimumTermFreq :: Maybe MinimumTermFrequency
592+ , moreLikeThisFieldMinimumTermFreq :: Maybe MinimumTermFrequency
506− , moreLikeThisFieldMaxQueryTerms :: Maybe MaxQueryTerms
593+ , moreLikeThisFieldMaxQueryTerms :: Maybe MaxQueryTerms
507− , moreLikeThisFieldStopWords :: Maybe [StopWord]
594+ , moreLikeThisFieldStopWords :: Maybe [StopWord]
508− , moreLikeThisFieldMinDocFrequency :: Maybe MinDocFrequency
595+ , moreLikeThisFieldMinDocFrequency :: Maybe MinDocFrequency
509− , moreLikeThisFieldMaxDocFrequency :: Maybe MaxDocFrequency
596+ , moreLikeThisFieldMaxDocFrequency :: Maybe MaxDocFrequency
510− , moreLikeThisFieldMinWordLength :: Maybe MinWordLength
597+ , moreLikeThisFieldMinWordLength :: Maybe MinWordLength
511− , moreLikeThisFieldMaxWordLength :: Maybe MaxWordLength
598+ , moreLikeThisFieldMaxWordLength :: Maybe MaxWordLength
512− , moreLikeThisFieldBoostTerms :: Maybe BoostTerms
599+ , moreLikeThisFieldBoostTerms :: Maybe BoostTerms
513− , moreLikeThisFieldBoost :: Maybe Boost
600+ , moreLikeThisFieldBoost :: Maybe Boost
514− , moreLikeThisFieldAnalyzer :: Maybe Analyzer
601+ , moreLikeThisFieldAnalyzer :: Maybe Analyzer
515− } deriving (Eq, Show)
602+ } deriving (Eq, Show)
517data MoreLikeThisQuery =
604data MoreLikeThisQuery =
518− MoreLikeThisQuery { moreLikeThisText :: Text
606+ { moreLikeThisText :: Text
519− , moreLikeThisFields :: Maybe [FieldName]
607+ , moreLikeThisFields :: Maybe [FieldName]
520− -- default 0.3 (30%)
608+ -- default 0.3 (30%)
521− , moreLikeThisPercentMatch :: Maybe PercentMatch
609+ , moreLikeThisPercentMatch :: Maybe PercentMatch
522− , moreLikeThisMinimumTermFreq :: Maybe MinimumTermFrequency
610+ , moreLikeThisMinimumTermFreq :: Maybe MinimumTermFrequency
523− , moreLikeThisMaxQueryTerms :: Maybe MaxQueryTerms
611+ , moreLikeThisMaxQueryTerms :: Maybe MaxQueryTerms
524− , moreLikeThisStopWords :: Maybe [StopWord]
612+ , moreLikeThisStopWords :: Maybe [StopWord]
525− , moreLikeThisMinDocFrequency :: Maybe MinDocFrequency
613+ , moreLikeThisMinDocFrequency :: Maybe MinDocFrequency
526− , moreLikeThisMaxDocFrequency :: Maybe MaxDocFrequency
614+ , moreLikeThisMaxDocFrequency :: Maybe MaxDocFrequency
527− , moreLikeThisMinWordLength :: Maybe MinWordLength
615+ , moreLikeThisMinWordLength :: Maybe MinWordLength
528− , moreLikeThisMaxWordLength :: Maybe MaxWordLength
616+ , moreLikeThisMaxWordLength :: Maybe MaxWordLength
529− , moreLikeThisBoostTerms :: Maybe BoostTerms
617+ , moreLikeThisBoostTerms :: Maybe BoostTerms
530− , moreLikeThisBoost :: Maybe Boost
618+ , moreLikeThisBoost :: Maybe Boost
531− , moreLikeThisAnalyzer :: Maybe Analyzer
619+ , moreLikeThisAnalyzer :: Maybe Analyzer
532− } deriving (Eq, Show)
620+ } deriving (Eq, Show)
535data IndicesQuery =
622data IndicesQuery =
536− IndicesQuery { indicesQueryIndices :: [IndexName]
624+ { indicesQueryIndices :: [IndexName]
537− , indicesQuery :: Query
625+ , indicesQuery :: Query
538− -- default "all"
626+ -- default "all"
539− , indicesQueryNoMatch :: Maybe Query } deriving (Eq, Show)
627+ , indicesQueryNoMatch :: Maybe Query } deriving (Eq, Show)
541data HasParentQuery =
629data HasParentQuery =
542− HasParentQuery { hasParentQueryType :: TypeName
631+ { hasParentQueryType :: TypeName
543− , hasParentQuery :: Query
632+ , hasParentQuery :: Query
544− , hasParentQueryScoreType :: Maybe ScoreType } deriving (Eq, Show)
633+ , hasParentQueryScoreType :: Maybe ScoreType } deriving (Eq, Show)
546data HasChildQuery =
635data HasChildQuery =
547− HasChildQuery { hasChildQueryType :: TypeName
637+ { hasChildQueryType :: TypeName
548− , hasChildQuery :: Query
638+ , hasChildQuery :: Query
549− , hasChildQueryScoreType :: Maybe ScoreType } deriving (Eq, Show)
639+ , hasChildQueryScoreType :: Maybe ScoreType } deriving (Eq, Show)
551−data ScoreType = ScoreTypeMax
641+data ScoreType =
552− | ScoreTypeSum
643+ | ScoreTypeSum
553− | ScoreTypeAvg
644+ | ScoreTypeAvg
554− | ScoreTypeNone deriving (Eq, Show)
645+ | ScoreTypeNone deriving (Eq, Show)
556−data FuzzyQuery = FuzzyQuery { fuzzyQueryField :: FieldName
648+ FuzzyQuery { fuzzyQueryField :: FieldName
557− , fuzzyQueryValue :: Text
649+ , fuzzyQueryValue :: Text
558− , fuzzyQueryPrefixLength :: PrefixLength
650+ , fuzzyQueryPrefixLength :: PrefixLength
559− , fuzzyQueryMaxExpansions :: MaxExpansions
651+ , fuzzyQueryMaxExpansions :: MaxExpansions
560− , fuzzyQueryFuzziness :: Fuzziness
652+ , fuzzyQueryFuzziness :: Fuzziness
561− , fuzzyQueryBoost :: Maybe Boost
653+ , fuzzyQueryBoost :: Maybe Boost
562− } deriving (Eq, Show)
654+ } deriving (Eq, Show)
564data FuzzyLikeFieldQuery =
656data FuzzyLikeFieldQuery =
565− FuzzyLikeFieldQuery { fuzzyLikeField :: FieldName
658+ { fuzzyLikeField :: FieldName
566− -- anaphora is good for the soul.
659+ -- anaphora is good for the soul.
567− , fuzzyLikeFieldText :: Text
660+ , fuzzyLikeFieldText :: Text
568− , fuzzyLikeFieldMaxQueryTerms :: MaxQueryTerms
661+ , fuzzyLikeFieldMaxQueryTerms :: MaxQueryTerms
569− , fuzzyLikeFieldIgnoreTermFrequency :: IgnoreTermFrequency
662+ , fuzzyLikeFieldIgnoreTermFrequency :: IgnoreTermFrequency
570− , fuzzyLikeFieldFuzziness :: Fuzziness
663+ , fuzzyLikeFieldFuzziness :: Fuzziness
571− , fuzzyLikeFieldPrefixLength :: PrefixLength
664+ , fuzzyLikeFieldPrefixLength :: PrefixLength
572− , fuzzyLikeFieldBoost :: Boost
665+ , fuzzyLikeFieldBoost :: Boost
573− , fuzzyLikeFieldAnalyzer :: Maybe Analyzer
666+ , fuzzyLikeFieldAnalyzer :: Maybe Analyzer
574− } deriving (Eq, Show)
667+ } deriving (Eq, Show)
576data FuzzyLikeThisQuery =
669data FuzzyLikeThisQuery =
577− FuzzyLikeThisQuery { fuzzyLikeFields :: [FieldName]
671+ { fuzzyLikeFields :: [FieldName]
578− , fuzzyLikeText :: Text
672+ , fuzzyLikeText :: Text
579− , fuzzyLikeMaxQueryTerms :: MaxQueryTerms
673+ , fuzzyLikeMaxQueryTerms :: MaxQueryTerms
580− , fuzzyLikeIgnoreTermFrequency :: IgnoreTermFrequency
674+ , fuzzyLikeIgnoreTermFrequency :: IgnoreTermFrequency
581− , fuzzyLikeFuzziness :: Fuzziness
675+ , fuzzyLikeFuzziness :: Fuzziness
582− , fuzzyLikePrefixLength :: PrefixLength
676+ , fuzzyLikePrefixLength :: PrefixLength
583− , fuzzyLikeBoost :: Boost
677+ , fuzzyLikeBoost :: Boost
584− , fuzzyLikeAnalyzer :: Maybe Analyzer
678+ , fuzzyLikeAnalyzer :: Maybe Analyzer
585− } deriving (Eq, Show)
679+ } deriving (Eq, Show)
587data FilteredQuery =
681data FilteredQuery =
588− FilteredQuery { filteredQuery :: Query
683+ { filteredQuery :: Query
589− , filteredFilter :: Filter } deriving (Eq, Show)
684+ , filteredFilter :: Filter } deriving (Eq, Show)
591−data DisMaxQuery = DisMaxQuery { disMaxQueries :: [Query]
687+ DisMaxQuery { disMaxQueries :: [Query]
592− -- default 0.0
688+ -- default 0.0
593− , disMaxTiebreaker :: Tiebreaker
689+ , disMaxTiebreaker :: Tiebreaker
594− , disMaxBoost :: Maybe Boost
690+ , disMaxBoost :: Maybe Boost
595− } deriving (Eq, Show)
691+ } deriving (Eq, Show)
596data MatchQuery =
693data MatchQuery =
597 MatchQuery { matchQueryField :: FieldName
694 MatchQuery { matchQueryField :: FieldName
598 , matchQueryQueryString :: QueryString
695 , matchQueryQueryString :: QueryString
@@ -610,8 +707,9 @@ data MatchQuery =
610mkMatchQuery :: FieldName -> QueryString -> MatchQuery
707mkMatchQuery :: FieldName -> QueryString -> MatchQuery
611mkMatchQuery field query = MatchQuery field query Or ZeroTermsNone Nothing Nothing Nothing Nothing Nothing
708mkMatchQuery field query = MatchQuery field query Or ZeroTermsNone Nothing Nothing Nothing Nothing Nothing
613−data MatchQueryType = MatchPhrase
710+data MatchQueryType =
614− | MatchPhrasePrefix deriving (Eq, Show)
712+ | MatchPhrasePrefix deriving (Eq, Show)
616data MultiMatchQuery =
714data MultiMatchQuery =
617 MultiMatchQuery { multiMatchQueryFields :: [FieldName]
715 MultiMatchQuery { multiMatchQueryFields :: [FieldName]
@@ -632,28 +730,33 @@ data MultiMatchQuery =
633mkMultiMatchQuery :: [FieldName] -> QueryString -> MultiMatchQuery
731mkMultiMatchQuery :: [FieldName] -> QueryString -> MultiMatchQuery
634mkMultiMatchQuery matchFields query =
732mkMultiMatchQuery matchFields query =
733+ MultiMatchQuery matchFields query
635− MultiMatchQuery matchFields query Or ZeroTermsNone Nothing Nothing Nothing Nothing Nothing Nothing
734+ Or ZeroTermsNone Nothing Nothing Nothing Nothing Nothing Nothing
637−data MultiMatchQueryType = MultiMatchBestFields
736+data MultiMatchQueryType =
737+ MultiMatchBestFields
638− | MultiMatchMostFields
738+ | MultiMatchMostFields
639− | MultiMatchCrossFields
739+ | MultiMatchCrossFields
640− | MultiMatchPhrase
740+ | MultiMatchPhrase
641− | MultiMatchPhrasePrefix deriving (Eq, Show)
741+ | MultiMatchPhrasePrefix deriving (Eq, Show)
643−data BoolQuery = BoolQuery { boolQueryMustMatch :: Maybe Query
744+ BoolQuery { boolQueryMustMatch :: Maybe Query
644− , boolQueryMustNotMatch :: Maybe Query
745+ , boolQueryMustNotMatch :: Maybe Query
645− , boolQueryShouldMatch :: Maybe [Query]
746+ , boolQueryShouldMatch :: Maybe [Query]
646− , boolQueryMinimumShouldMatch :: Maybe MinimumMatch
747+ , boolQueryMinimumShouldMatch :: Maybe MinimumMatch
647− , boolQueryBoost :: Maybe Boost
748+ , boolQueryBoost :: Maybe Boost
648− , boolQueryDisableCoord :: Maybe DisableCoord
749+ , boolQueryDisableCoord :: Maybe DisableCoord
649− } deriving (Eq, Show)
750+ } deriving (Eq, Show)
651mkBoolQuery :: Maybe Query -> Maybe Query -> Maybe [Query] -> BoolQuery
752mkBoolQuery :: Maybe Query -> Maybe Query -> Maybe [Query] -> BoolQuery
753+mkBoolQuery must mustNot should =
652−mkBoolQuery must mustNot should = BoolQuery must mustNot should Nothing Nothing Nothing
754+ BoolQuery must mustNot should Nothing Nothing Nothing
654−data BoostingQuery = BoostingQuery { positiveQuery :: Query
757+ BoostingQuery { positiveQuery :: Query
655− , negativeQuery :: Query
758+ , negativeQuery :: Query
656− , negativeBoost :: Boost } deriving (Eq, Show)
759+ , negativeBoost :: Boost } deriving (Eq, Show)
658data CommonTermsQuery =
761data CommonTermsQuery =
659 CommonTermsQuery { commonField :: FieldName
762 CommonTermsQuery { commonField :: FieldName
@@ -667,9 +770,10 @@ data CommonTermsQuery =
667 , commonDisableCoord :: Maybe DisableCoord
770 , commonDisableCoord :: Maybe DisableCoord
668 } deriving (Eq, Show)
771 } deriving (Eq, Show)
773+data CommonMinimumMatch =
670−data CommonMinimumMatch = CommonMinimumMatchHighLow MinimumMatchHighLow
774+ CommonMinimumMatchHighLow MinimumMatchHighLow
671− | CommonMinimumMatch MinimumMatch
775+ | CommonMinimumMatch MinimumMatch
672− deriving (Eq, Show)
776+ deriving (Eq, Show)
674data MinimumMatchHighLow =
778data MinimumMatchHighLow =
675 MinimumMatchHighLow { lowFreq :: MinimumMatch
779 MinimumMatchHighLow { lowFreq :: MinimumMatch
@@ -725,9 +829,9 @@ halfRangeToKV (HalfRangeGt (GreaterThan n)) = ("gt", n)
725halfRangeToKV (HalfRangeGte (GreaterThanEq n)) = ("gte", n)
829halfRangeToKV (HalfRangeGte (GreaterThanEq n)) = ("gte", n)
727rangeToKV :: Range -> (Text, Double, Text, Double)
831rangeToKV :: Range -> (Text, Double, Text, Double)
728−rangeToKV (RangeLtGt (LessThan m) (GreaterThan n)) = ("lt", m, "gt", n)
832+rangeToKV (RangeLtGt (LessThan m) (GreaterThan n)) = ("lt", m, "gt", n)
729rangeToKV (RangeLtGte (LessThan m) (GreaterThanEq n)) = ("lt", m, "gte", n)
833rangeToKV (RangeLtGte (LessThan m) (GreaterThanEq n)) = ("lt", m, "gte", n)
730−rangeToKV (RangeLteGt (LessThanEq m) (GreaterThan n)) = ("lte", m, "gt", n)
834+rangeToKV (RangeLteGt (LessThanEq m) (GreaterThan n)) = ("lte", m, "gt", n)
731rangeToKV (RangeLteGte (LessThanEq m) (GreaterThanEq n)) = ("lte", m, "gte", n)
835rangeToKV (RangeLteGte (LessThanEq m) (GreaterThanEq n)) = ("lte", m, "gte", n)
733-- phew. Coulda used Agda style case breaking there but, you know, whatever. :)
837-- phew. Coulda used Agda style case breaking there but, you know, whatever. :)
@@ -743,7 +847,6 @@ data BoolMatch = MustMatch Term Cache
743data GeoFilterType = GeoFilterMemory
847data GeoFilterType = GeoFilterMemory
744 | GeoFilterIndexed deriving (Eq, Show)
848 | GeoFilterIndexed deriving (Eq, Show)
747data LatLon = LatLon { lat :: Double
850data LatLon = LatLon { lat :: Double
748 , lon :: Double } deriving (Eq, Show)
851 , lon :: Double } deriving (Eq, Show)