packages feed

bloodhound 0.11.1.0 → 0.12.0.0

raw patch · 7 files changed

+6005/−3824 lines, 7 filesdep +generics-sopdep +temporarydep +unixdep −derivedep −doctest-propdep ~aesondep ~hspecdep ~http-clientnew-uploaderPVP ok

version bump matches the API change (PVP)

Dependencies added: generics-sop, temporary, unix

Dependencies removed: derive, doctest-prop

Dependency ranges changed: aeson, hspec, http-client, network-uri

API changes (from Hackage documentation)

- Database.Bloodhound.Types: instance (Data.Aeson.Types.Class.FromJSON a, Database.Bloodhound.Types.BucketAggregation a) => Data.Aeson.Types.Class.FromJSON (Database.Bloodhound.Types.Bucket a)
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.AliasRouting
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.AllocationPolicy
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.AllowLeadingWildcard
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.AnalyzeWildcard
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Analyzer
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.BoolMatch
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.BoolQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.BooleanOperator
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Boost
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.BoostTerms
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.BoostingQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.BucketValue
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Bytes
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.CacheKey
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.CacheName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.CommonMinimumMatch
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.CommonTermsQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.CompoundFormat
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.CutoffFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.DateHistogramResult
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.DateRangeResult
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.DisMaxQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.DisableCoord
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Distance
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.DistanceType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.DistanceUnit
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.DocId
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.DocVersion
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.EnablePositionIncrements
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.EsError
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Existence
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.FSType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.FieldName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.FieldOrFields
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Filter
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.FilteredQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Fuzziness
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.FuzzyLikeFieldQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.FuzzyLikeThisQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.FuzzyQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.GeneratePhraseQueries
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.GeoBoundingBox
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.GeoBoundingBoxConstraint
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.GeoFilterType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.HasChildQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.HasParentQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.IgnoreTermFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.IndexAliasCreate
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.IndexAliasRouting
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.IndexAliasesSummary
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.IndexName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.IndexSettings
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.IndexSettingsSummary
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.IndicesQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.InitialShardCount
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.LatLon
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Lenient
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Locale
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.LowercaseExpanded
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MappingName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MatchQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MatchQueryType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MaxDocFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MaxExpansions
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MaxQueryTerms
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MaxWordLength
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MinDocFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MinWordLength
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MinimumMatch
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MinimumTermFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MissingResult
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MoreLikeThisFieldQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MoreLikeThisQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MultiMatchQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.MultiMatchQueryType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.NestedQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.NominalDiffTimeJSON
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.NullValue
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.OptimizeBbox
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.POSIXMS
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.PercentMatch
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.PhraseSlop
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.PrefixLength
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.PrefixQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Query
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.QueryPath
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.QueryString
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.QueryStringQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.RangeExecution
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.RangeQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.RangeValue
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Regexp
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.RegexpFlag
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.RegexpFlags
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.RegexpQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.ReplicaBounds
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.ReplicaCount
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.RoutingValue
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.ScoreType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.ScrollId
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.SearchAliasRouting
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.ShardCount
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.ShardResult
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.SimpleQueryFlag
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.SimpleQueryStringQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Status
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.StopWord
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.TemplateName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.TemplatePattern
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Term
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.TermsResult
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Tiebreaker
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.TypeName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.UpdatableIndexSetting
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.Version
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON Database.Bloodhound.Types.ZeroTermsQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Database.Bloodhound.Types.EsResult a)
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Database.Bloodhound.Types.EsResultFound a)
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Database.Bloodhound.Types.Hit a)
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Database.Bloodhound.Types.SearchHits a)
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Database.Bloodhound.Types.SearchResult a)
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Aggregation
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.AliasRouting
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.AllocationPolicy
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.AllowLeadingWildcard
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.AnalyzeWildcard
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Analyzer
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.BoolMatch
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.BoolQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.BooleanOperator
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Boost
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.BoostTerms
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.BoostingQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Bytes
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.CacheKey
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.CacheName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.CollectionMode
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.CommonMinimumMatch
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.CommonTermsQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.CompoundFormat
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.CutoffFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.DateMathExpr
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.DateRangeAggRange
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.DateRangeAggregation
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.DisMaxQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.DisableCoord
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Distance
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.DistanceType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.DistanceUnit
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.DocId
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.DocVersion
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.EnablePositionIncrements
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Exclude
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.ExecutionHint
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Existence
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.ExternalDocVersion
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.FSType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.FieldHighlight
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.FieldName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.FieldOrFields
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Filter
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.FilteredQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.From
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Fuzziness
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.FuzzyLikeFieldQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.FuzzyLikeThisQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.FuzzyQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.GeneratePhraseQueries
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.GeoBoundingBox
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.GeoBoundingBoxConstraint
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.GeoFilterType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.GeoPoint
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.HasChildQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.HasParentQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.HighlightEncoder
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.HighlightSettings
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Highlights
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IgnoreTermFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Include
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IndexAlias
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IndexAliasAction
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IndexAliasCreate
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IndexAliasName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IndexAliasRouting
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IndexName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IndexSettings
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IndexTemplate
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.IndicesQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.InitialShardCount
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Interval
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.LatLon
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Lenient
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Locale
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.LowercaseExpanded
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MappingName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MatchQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MatchQueryType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MaxDocFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MaxExpansions
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MaxQueryTerms
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MaxWordLength
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MinDocFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MinWordLength
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MinimumMatch
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MinimumTermFrequency
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Missing
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MoreLikeThisFieldQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MoreLikeThisQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MultiMatchQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.MultiMatchQueryType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.NestedQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.NominalDiffTimeJSON
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.NullValue
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.OptimizeBbox
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Pattern
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.PatternOrPatterns
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.PercentMatch
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.PhraseSlop
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.PrefixLength
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.PrefixQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Query
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.QueryPath
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.QueryString
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.QueryStringQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.RangeExecution
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.RangeQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.RegexpFlags
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.RegexpQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.ReplicaBounds
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.ReplicaCount
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.RoutingValue
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.ScoreType
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.ScrollId
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Search
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.SearchAliasRouting
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.ShardCount
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.SimpleQueryFlag
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.SimpleQueryStringQuery
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Size
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.SortMode
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.SortOrder
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.SortSpec
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Source
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.StopWord
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.TemplateName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.TemplatePattern
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Term
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.TermInclusion
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.TermOrder
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Tiebreaker
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.TypeName
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.UpdatableIndexSetting
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.Version
- Database.Bloodhound.Types: instance Data.Aeson.Types.Class.ToJSON Database.Bloodhound.Types.ZeroTermsQuery
+ Database.Bloodhound.Client: createSnapshot :: (MonadBH m) => SnapshotRepoName -> SnapshotName -> SnapshotCreateSettings -> m Reply
+ Database.Bloodhound.Client: deleteSnapshot :: MonadBH m => SnapshotRepoName -> SnapshotName -> m Reply
+ Database.Bloodhound.Client: deleteSnapshotRepo :: MonadBH m => SnapshotRepoName -> m Reply
+ Database.Bloodhound.Client: getNodesInfo :: (MonadBH m, MonadThrow m) => NodeSelection -> m (Either EsError NodesInfo)
+ Database.Bloodhound.Client: getNodesStats :: (MonadBH m, MonadThrow m) => NodeSelection -> m (Either EsError NodesStats)
+ Database.Bloodhound.Client: getSnapshotRepos :: (MonadBH m, MonadThrow m) => SnapshotRepoSelection -> m (Either EsError [GenericSnapshotRepo])
+ Database.Bloodhound.Client: getSnapshots :: (MonadBH m, MonadThrow m) => SnapshotRepoName -> SnapshotSelection -> m (Either EsError [SnapshotInfo])
+ Database.Bloodhound.Client: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Client.GSRs
+ Database.Bloodhound.Client: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Client.SIs
+ Database.Bloodhound.Client: restoreSnapshot :: MonadBH m => SnapshotRepoName -> SnapshotName -> SnapshotRestoreSettings -> m Reply
+ Database.Bloodhound.Client: updateSnapshotRepo :: (MonadBH m, SnapshotRepo repo) => SnapshotRepoUpdateSettings -> repo -> m Reply
+ Database.Bloodhound.Client: verifySnapshotRepo :: (MonadBH m, MonadThrow m) => SnapshotRepoName -> m (Either EsError SnapshotVerification)
+ Database.Bloodhound.Client: waitForYellowIndex :: MonadBH m => IndexName -> m Reply
+ Database.Bloodhound.Types: AllNodes :: NodeSelection
+ Database.Bloodhound.Types: AllSnapshotRepos :: SnapshotRepoSelection
+ Database.Bloodhound.Types: AllSnapshots :: SnapshotSelection
+ Database.Bloodhound.Types: BoundTransportAddress :: EsAddress -> EsAddress -> BoundTransportAddress
+ Database.Bloodhound.Types: BuildHash :: Text -> BuildHash
+ Database.Bloodhound.Types: CPUInfo :: Bytes -> Int -> Int -> Int -> Int -> Text -> Text -> CPUInfo
+ Database.Bloodhound.Types: CardinalityAgg :: CardinalityAggregation -> Aggregation
+ Database.Bloodhound.Types: CardinalityAggregation :: FieldName -> Maybe Int -> CardinalityAggregation
+ Database.Bloodhound.Types: ClusterName :: Text -> ClusterName
+ Database.Bloodhound.Types: EsAddress :: Text -> EsAddress
+ Database.Bloodhound.Types: ExactRepo :: SnapshotRepoName -> SnapshotRepoPattern
+ Database.Bloodhound.Types: ExactSnap :: SnapshotName -> SnapshotPattern
+ Database.Bloodhound.Types: FsSnapshotRepo :: SnapshotRepoName -> FilePath -> Bool -> Maybe Bytes -> Maybe Bytes -> Maybe Bytes -> FsSnapshotRepo
+ Database.Bloodhound.Types: FullNodeId :: Text -> FullNodeId
+ Database.Bloodhound.Types: GenericSnapshotRepo :: SnapshotRepoName -> SnapshotRepoType -> GenericSnapshotRepoSettings -> GenericSnapshotRepo
+ Database.Bloodhound.Types: GenericSnapshotRepoSettings :: Object -> GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: JVMBufferPoolStats :: Bytes -> Bytes -> Int -> JVMBufferPoolStats
+ Database.Bloodhound.Types: JVMGCCollector :: Text -> JVMGCCollector
+ Database.Bloodhound.Types: JVMGCStats :: NominalDiffTime -> Int -> JVMGCStats
+ Database.Bloodhound.Types: JVMMemoryInfo :: Bytes -> Bytes -> Bytes -> Bytes -> Bytes -> JVMMemoryInfo
+ Database.Bloodhound.Types: JVMMemoryPool :: Text -> JVMMemoryPool
+ Database.Bloodhound.Types: JVMPoolStats :: Bytes -> Bytes -> Bytes -> Bytes -> JVMPoolStats
+ Database.Bloodhound.Types: LoadAvgs :: Double -> Double -> Double -> LoadAvgs
+ Database.Bloodhound.Types: LocalNode :: NodeSelection
+ Database.Bloodhound.Types: MacAddress :: Text -> MacAddress
+ Database.Bloodhound.Types: MaybeNA :: Maybe a -> MaybeNA a
+ Database.Bloodhound.Types: NetworkInterfaceName :: Text -> NetworkInterfaceName
+ Database.Bloodhound.Types: NodeBreakerStats :: Int -> Double -> Bytes -> Bytes -> NodeBreakerStats
+ Database.Bloodhound.Types: NodeBreakersStats :: NodeBreakerStats -> NodeBreakerStats -> NodeBreakerStats -> NodeBreakersStats
+ Database.Bloodhound.Types: NodeByAttribute :: NodeAttrName -> Text -> NodeSelector
+ Database.Bloodhound.Types: NodeByFullNodeId :: FullNodeId -> NodeSelector
+ Database.Bloodhound.Types: NodeByHost :: Server -> NodeSelector
+ Database.Bloodhound.Types: NodeByName :: NodeName -> NodeSelector
+ Database.Bloodhound.Types: NodeDataPathStats :: Maybe Double -> Maybe Double -> Maybe Bytes -> Maybe Bytes -> Maybe Bytes -> Maybe Int -> Maybe Int -> Maybe Int -> Bytes -> Bytes -> Bytes -> Maybe Text -> Text -> Text -> Text -> NodeDataPathStats
+ Database.Bloodhound.Types: NodeFSStats :: [NodeDataPathStats] -> NodeFSTotalStats -> UTCTime -> NodeFSStats
+ Database.Bloodhound.Types: NodeFSTotalStats :: Maybe Double -> Maybe Double -> Maybe Bytes -> Maybe Bytes -> Maybe Bytes -> Maybe Int -> Maybe Int -> Maybe Int -> Bytes -> Bytes -> Bytes -> NodeFSTotalStats
+ Database.Bloodhound.Types: NodeHTTPInfo :: Bytes -> BoundTransportAddress -> NodeHTTPInfo
+ Database.Bloodhound.Types: NodeHTTPStats :: Int -> Int -> NodeHTTPStats
+ Database.Bloodhound.Types: NodeIndicesStats :: Maybe NominalDiffTime -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Bytes -> Int -> NominalDiffTime -> Int -> Bytes -> Int -> Maybe Bytes -> Bytes -> Maybe Bytes -> Bytes -> Bytes -> Int -> Bytes -> Int -> Bytes -> Int -> NominalDiffTime -> Int -> Int -> Bytes -> Bytes -> Int -> Bytes -> NominalDiffTime -> Int -> Int -> NominalDiffTime -> Int -> NominalDiffTime -> Int -> Bytes -> Int -> NominalDiffTime -> Int -> Bytes -> Int -> Int -> Int -> NominalDiffTime -> Int -> Int -> NominalDiffTime -> Int -> Int -> Int -> NominalDiffTime -> Int -> NominalDiffTime -> Int -> NominalDiffTime -> Int -> Maybe NominalDiffTime -> Maybe Bool -> Maybe Int -> Int -> NominalDiffTime -> Int -> Int -> NominalDiffTime -> Int -> NominalDiffTime -> Bytes -> Int -> Int -> NodeIndicesStats
+ Database.Bloodhound.Types: NodeInfo :: EsAddress -> BuildHash -> VersionNumber -> Server -> Server -> EsAddress -> NodeName -> FullNodeId -> [NodePluginInfo] -> NodeHTTPInfo -> NodeTransportInfo -> NodeNetworkInfo -> NodeThreadPoolsInfo -> NodeJVMInfo -> NodeProcessInfo -> NodeOSInfo -> Object -> NodeInfo
+ Database.Bloodhound.Types: NodeJVMInfo :: [JVMMemoryPool] -> [JVMGCCollector] -> JVMMemoryInfo -> UTCTime -> Text -> VersionNumber -> Text -> VersionNumber -> PID -> NodeJVMInfo
+ Database.Bloodhound.Types: NodeJVMStats :: JVMBufferPoolStats -> JVMBufferPoolStats -> JVMGCStats -> JVMGCStats -> Int -> Int -> JVMPoolStats -> JVMPoolStats -> JVMPoolStats -> Bytes -> Bytes -> Bytes -> Bytes -> Int -> Bytes -> NominalDiffTime -> UTCTime -> NodeJVMStats
+ Database.Bloodhound.Types: NodeList :: (NonEmpty NodeSelector) -> NodeSelection
+ Database.Bloodhound.Types: NodeName :: Text -> NodeName
+ Database.Bloodhound.Types: NodeNetworkInfo :: NodeNetworkInterface -> NominalDiffTime -> NodeNetworkInfo
+ Database.Bloodhound.Types: NodeNetworkInterface :: MacAddress -> NetworkInterfaceName -> Server -> NodeNetworkInterface
+ Database.Bloodhound.Types: NodeNetworkStats :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> NodeNetworkStats
+ Database.Bloodhound.Types: NodeOSInfo :: Bytes -> Bytes -> CPUInfo -> Int -> NominalDiffTime -> NodeOSInfo
+ Database.Bloodhound.Types: NodeOSStats :: Bytes -> Bytes -> Bytes -> Bytes -> Int -> Int -> Bytes -> Bytes -> Int -> Int -> Int -> Int -> Int -> Maybe LoadAvgs -> NominalDiffTime -> UTCTime -> NodeOSStats
+ Database.Bloodhound.Types: NodePluginInfo :: Bool -> Bool -> Text -> MaybeNA VersionNumber -> PluginName -> NodePluginInfo
+ Database.Bloodhound.Types: NodeProcessInfo :: Bool -> Int -> PID -> NominalDiffTime -> NodeProcessInfo
+ Database.Bloodhound.Types: NodeProcessStats :: Bytes -> Bytes -> Bytes -> NominalDiffTime -> NominalDiffTime -> NominalDiffTime -> Int -> Int -> UTCTime -> NodeProcessStats
+ Database.Bloodhound.Types: NodeStats :: NodeName -> FullNodeId -> Maybe NodeBreakersStats -> NodeHTTPStats -> NodeTransportStats -> NodeFSStats -> NodeNetworkStats -> NodeThreadPoolsStats -> NodeJVMStats -> NodeProcessStats -> NodeOSStats -> NodeIndicesStats -> NodeStats
+ Database.Bloodhound.Types: NodeThreadPoolInfo :: ThreadPoolSize -> Maybe NominalDiffTime -> Maybe Int -> Maybe Int -> ThreadPoolType -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: NodeThreadPoolStats :: Int -> Int -> Int -> Int -> Int -> Int -> NodeThreadPoolStats
+ Database.Bloodhound.Types: NodeThreadPoolsInfo :: NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> Maybe NodeThreadPoolInfo -> Maybe NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> Maybe NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolInfo -> NodeThreadPoolsInfo
+ Database.Bloodhound.Types: NodeThreadPoolsStats :: NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> Maybe NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolStats -> Maybe NodeThreadPoolStats -> Maybe NodeThreadPoolStats -> NodeThreadPoolStats -> NodeThreadPoolsStats
+ Database.Bloodhound.Types: NodeTransportInfo :: [BoundTransportAddress] -> BoundTransportAddress -> NodeTransportInfo
+ Database.Bloodhound.Types: NodeTransportStats :: Bytes -> Int -> Bytes -> Int -> Int -> NodeTransportStats
+ Database.Bloodhound.Types: NodesInfo :: [NodeInfo] -> ClusterName -> NodesInfo
+ Database.Bloodhound.Types: NodesStats :: [NodeStats] -> ClusterName -> NodesStats
+ Database.Bloodhound.Types: OtherRepoConversionError :: Text -> SnapshotRepoConversionError
+ Database.Bloodhound.Types: PID :: Int -> PID
+ Database.Bloodhound.Types: PluginName :: Text -> PluginName
+ Database.Bloodhound.Types: RRSubGroup :: RRGroupRefNum -> RestoreRenameToken
+ Database.Bloodhound.Types: RRSubWholeMatch :: RestoreRenameToken
+ Database.Bloodhound.Types: RRTLit :: Text -> RestoreRenameToken
+ Database.Bloodhound.Types: RepoPattern :: Text -> SnapshotRepoPattern
+ Database.Bloodhound.Types: RepoTypeMismatch :: SnapshotRepoType -> SnapshotRepoType -> SnapshotRepoConversionError
+ Database.Bloodhound.Types: RestoreIndexSettings :: Maybe ReplicaCount -> RestoreIndexSettings
+ Database.Bloodhound.Types: RestoreRenamePattern :: Text -> RestoreRenamePattern
+ Database.Bloodhound.Types: ShardId :: Int -> ShardId
+ Database.Bloodhound.Types: SnapPattern :: Text -> SnapshotPattern
+ Database.Bloodhound.Types: SnapshotAborted :: SnapshotState
+ Database.Bloodhound.Types: SnapshotCreateSettings :: Bool -> Maybe IndexSelection -> Bool -> Bool -> Bool -> SnapshotCreateSettings
+ Database.Bloodhound.Types: SnapshotFailed :: SnapshotState
+ Database.Bloodhound.Types: SnapshotInfo :: ShardResult -> [SnapshotShardFailure] -> NominalDiffTime -> UTCTime -> UTCTime -> SnapshotState -> [IndexName] -> SnapshotName -> SnapshotInfo
+ Database.Bloodhound.Types: SnapshotInit :: SnapshotState
+ Database.Bloodhound.Types: SnapshotList :: (NonEmpty SnapshotPattern) -> SnapshotSelection
+ Database.Bloodhound.Types: SnapshotMissing :: SnapshotState
+ Database.Bloodhound.Types: SnapshotName :: Text -> SnapshotName
+ Database.Bloodhound.Types: SnapshotNodeVerification :: FullNodeId -> NodeName -> SnapshotNodeVerification
+ Database.Bloodhound.Types: SnapshotRepoList :: (NonEmpty SnapshotRepoPattern) -> SnapshotRepoSelection
+ Database.Bloodhound.Types: SnapshotRepoName :: Text -> SnapshotRepoName
+ Database.Bloodhound.Types: SnapshotRepoType :: Text -> SnapshotRepoType
+ Database.Bloodhound.Types: SnapshotRepoUpdateSettings :: Bool -> SnapshotRepoUpdateSettings
+ Database.Bloodhound.Types: SnapshotRestoreSettings :: Bool -> Maybe IndexSelection -> Bool -> Bool -> Maybe RestoreRenamePattern -> Maybe (NonEmpty RestoreRenameToken) -> Bool -> Bool -> Maybe RestoreIndexSettings -> Maybe (NonEmpty Text) -> SnapshotRestoreSettings
+ Database.Bloodhound.Types: SnapshotShardFailure :: IndexName -> Maybe NodeName -> Text -> ShardId -> SnapshotShardFailure
+ Database.Bloodhound.Types: SnapshotStarted :: SnapshotState
+ Database.Bloodhound.Types: SnapshotSuccess :: SnapshotState
+ Database.Bloodhound.Types: SnapshotVerification :: [SnapshotNodeVerification] -> SnapshotVerification
+ Database.Bloodhound.Types: SnapshotWaiting :: SnapshotState
+ Database.Bloodhound.Types: ThreadPoolBounded :: Int -> ThreadPoolSize
+ Database.Bloodhound.Types: ThreadPoolCached :: ThreadPoolType
+ Database.Bloodhound.Types: ThreadPoolFixed :: ThreadPoolType
+ Database.Bloodhound.Types: ThreadPoolScaling :: ThreadPoolType
+ Database.Bloodhound.Types: ThreadPoolUnbounded :: ThreadPoolSize
+ Database.Bloodhound.Types: VersionNumber :: Version -> VersionNumber
+ Database.Bloodhound.Types: [boundAddress] :: BoundTransportAddress -> EsAddress
+ Database.Bloodhound.Types: [buildHash] :: BuildHash -> Text
+ Database.Bloodhound.Types: [cardinalityField] :: CardinalityAggregation -> FieldName
+ Database.Bloodhound.Types: [clusterName] :: ClusterName -> Text
+ Database.Bloodhound.Types: [cpuCacheSize] :: CPUInfo -> Bytes
+ Database.Bloodhound.Types: [cpuCoresPerSocket] :: CPUInfo -> Int
+ Database.Bloodhound.Types: [cpuMHZ] :: CPUInfo -> Int
+ Database.Bloodhound.Types: [cpuModel] :: CPUInfo -> Text
+ Database.Bloodhound.Types: [cpuTotalCores] :: CPUInfo -> Int
+ Database.Bloodhound.Types: [cpuTotalSockets] :: CPUInfo -> Int
+ Database.Bloodhound.Types: [cpuVendor] :: CPUInfo -> Text
+ Database.Bloodhound.Types: [esAddress] :: EsAddress -> Text
+ Database.Bloodhound.Types: [fsrChunkSize] :: FsSnapshotRepo -> Maybe Bytes
+ Database.Bloodhound.Types: [fsrCompressMetadata] :: FsSnapshotRepo -> Bool
+ Database.Bloodhound.Types: [fsrLocation] :: FsSnapshotRepo -> FilePath
+ Database.Bloodhound.Types: [fsrMaxRestoreBytesPerSec] :: FsSnapshotRepo -> Maybe Bytes
+ Database.Bloodhound.Types: [fsrMaxSnapshotBytesPerSec] :: FsSnapshotRepo -> Maybe Bytes
+ Database.Bloodhound.Types: [fsrName] :: FsSnapshotRepo -> SnapshotRepoName
+ Database.Bloodhound.Types: [fullNodeId] :: FullNodeId -> Text
+ Database.Bloodhound.Types: [gSnapshotRepoName] :: GenericSnapshotRepo -> SnapshotRepoName
+ Database.Bloodhound.Types: [gSnapshotRepoSettingsObject] :: GenericSnapshotRepoSettings -> Object
+ Database.Bloodhound.Types: [gSnapshotRepoSettings] :: GenericSnapshotRepo -> GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: [gSnapshotRepoType] :: GenericSnapshotRepo -> SnapshotRepoType
+ Database.Bloodhound.Types: [jvmBufferPoolStatsCount] :: JVMBufferPoolStats -> Int
+ Database.Bloodhound.Types: [jvmBufferPoolStatsTotalCapacity] :: JVMBufferPoolStats -> Bytes
+ Database.Bloodhound.Types: [jvmBufferPoolStatsUsed] :: JVMBufferPoolStats -> Bytes
+ Database.Bloodhound.Types: [jvmGCCollector] :: JVMGCCollector -> Text
+ Database.Bloodhound.Types: [jvmGCStatsCollectionCount] :: JVMGCStats -> Int
+ Database.Bloodhound.Types: [jvmGCStatsCollectionTime] :: JVMGCStats -> NominalDiffTime
+ Database.Bloodhound.Types: [jvmMemoryInfoDirectMax] :: JVMMemoryInfo -> Bytes
+ Database.Bloodhound.Types: [jvmMemoryInfoHeapInit] :: JVMMemoryInfo -> Bytes
+ Database.Bloodhound.Types: [jvmMemoryInfoHeapMax] :: JVMMemoryInfo -> Bytes
+ Database.Bloodhound.Types: [jvmMemoryInfoNonHeapInit] :: JVMMemoryInfo -> Bytes
+ Database.Bloodhound.Types: [jvmMemoryInfoNonHeapMax] :: JVMMemoryInfo -> Bytes
+ Database.Bloodhound.Types: [jvmMemoryPool] :: JVMMemoryPool -> Text
+ Database.Bloodhound.Types: [jvmPoolStatsMax] :: JVMPoolStats -> Bytes
+ Database.Bloodhound.Types: [jvmPoolStatsPeakMax] :: JVMPoolStats -> Bytes
+ Database.Bloodhound.Types: [jvmPoolStatsPeakUsed] :: JVMPoolStats -> Bytes
+ Database.Bloodhound.Types: [jvmPoolStatsUsed] :: JVMPoolStats -> Bytes
+ Database.Bloodhound.Types: [loadAvg15Min] :: LoadAvgs -> Double
+ Database.Bloodhound.Types: [loadAvg1Min] :: LoadAvgs -> Double
+ Database.Bloodhound.Types: [loadAvg5Min] :: LoadAvgs -> Double
+ Database.Bloodhound.Types: [macAddress] :: MacAddress -> Text
+ Database.Bloodhound.Types: [networkInterfaceName] :: NetworkInterfaceName -> Text
+ Database.Bloodhound.Types: [nodeBreakersEstSize] :: NodeBreakerStats -> Bytes
+ Database.Bloodhound.Types: [nodeBreakersLimitSize] :: NodeBreakerStats -> Bytes
+ Database.Bloodhound.Types: [nodeBreakersOverhead] :: NodeBreakerStats -> Double
+ Database.Bloodhound.Types: [nodeBreakersTripped] :: NodeBreakerStats -> Int
+ Database.Bloodhound.Types: [nodeDataPathAvailable] :: NodeDataPathStats -> Bytes
+ Database.Bloodhound.Types: [nodeDataPathDevice] :: NodeDataPathStats -> Text
+ Database.Bloodhound.Types: [nodeDataPathDiskQueue] :: NodeDataPathStats -> Maybe Double
+ Database.Bloodhound.Types: [nodeDataPathDiskServiceTime] :: NodeDataPathStats -> Maybe Double
+ Database.Bloodhound.Types: [nodeDataPathFree] :: NodeDataPathStats -> Bytes
+ Database.Bloodhound.Types: [nodeDataPathIOOps] :: NodeDataPathStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeDataPathIOSize] :: NodeDataPathStats -> Maybe Bytes
+ Database.Bloodhound.Types: [nodeDataPathMount] :: NodeDataPathStats -> Text
+ Database.Bloodhound.Types: [nodeDataPathPath] :: NodeDataPathStats -> Text
+ Database.Bloodhound.Types: [nodeDataPathReadSize] :: NodeDataPathStats -> Maybe Bytes
+ Database.Bloodhound.Types: [nodeDataPathReads] :: NodeDataPathStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeDataPathTotal] :: NodeDataPathStats -> Bytes
+ Database.Bloodhound.Types: [nodeDataPathType] :: NodeDataPathStats -> Maybe Text
+ Database.Bloodhound.Types: [nodeDataPathWriteSize] :: NodeDataPathStats -> Maybe Bytes
+ Database.Bloodhound.Types: [nodeDataPathWrites] :: NodeDataPathStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeFSDataPaths] :: NodeFSStats -> [NodeDataPathStats]
+ Database.Bloodhound.Types: [nodeFSTimestamp] :: NodeFSStats -> UTCTime
+ Database.Bloodhound.Types: [nodeFSTotalAvailable] :: NodeFSTotalStats -> Bytes
+ Database.Bloodhound.Types: [nodeFSTotalDiskQueue] :: NodeFSTotalStats -> Maybe Double
+ Database.Bloodhound.Types: [nodeFSTotalDiskServiceTime] :: NodeFSTotalStats -> Maybe Double
+ Database.Bloodhound.Types: [nodeFSTotalFree] :: NodeFSTotalStats -> Bytes
+ Database.Bloodhound.Types: [nodeFSTotalIOOps] :: NodeFSTotalStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeFSTotalIOSize] :: NodeFSTotalStats -> Maybe Bytes
+ Database.Bloodhound.Types: [nodeFSTotalReadSize] :: NodeFSTotalStats -> Maybe Bytes
+ Database.Bloodhound.Types: [nodeFSTotalReads] :: NodeFSTotalStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeFSTotalTotal] :: NodeFSTotalStats -> Bytes
+ Database.Bloodhound.Types: [nodeFSTotalWriteSize] :: NodeFSTotalStats -> Maybe Bytes
+ Database.Bloodhound.Types: [nodeFSTotalWrites] :: NodeFSTotalStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeFSTotal] :: NodeFSStats -> NodeFSTotalStats
+ Database.Bloodhound.Types: [nodeHTTPCurrentOpen] :: NodeHTTPStats -> Int
+ Database.Bloodhound.Types: [nodeHTTPMaxContentLength] :: NodeHTTPInfo -> Bytes
+ Database.Bloodhound.Types: [nodeHTTPTotalOpened] :: NodeHTTPStats -> Int
+ Database.Bloodhound.Types: [nodeHTTPTransportAddress] :: NodeHTTPInfo -> BoundTransportAddress
+ Database.Bloodhound.Types: [nodeIndicesStatsCompletionSize] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsDocsCount] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsDocsDeleted] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsFieldDataEvictions] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsFieldDataMemory] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsFilterCacheEvictions] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsFilterCacheMemory] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsFlushTotalTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsFlushTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsGetCurrent] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsGetExistsTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsGetExistsTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsGetMissingTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsGetMissingTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsGetTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsGetTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsIDCacheMemory] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsIndexingDeleteCurrent] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsIndexingDeleteTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsIndexingDeleteTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsIndexingIndexCurrent] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsIndexingIndexTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsIndexingIsThrottled] :: NodeIndicesStats -> Maybe Bool
+ Database.Bloodhound.Types: [nodeIndicesStatsIndexingNoopUpdateTotal] :: NodeIndicesStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeIndicesStatsIndexingThrottleTime] :: NodeIndicesStats -> Maybe NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsIndexingTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsMergesCurrentDocs] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsMergesCurrentSize] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsMergesCurrent] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsMergesTotalDocs] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsMergesTotalSize] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsMergesTotalTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsMergesTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsPercolateCurrent] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsPercolateMemory] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsPercolateQueries] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsPercolateTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsPercolateTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsQueryCacheEvictions] :: NodeIndicesStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeIndicesStatsQueryCacheHits] :: NodeIndicesStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeIndicesStatsQueryCacheMisses] :: NodeIndicesStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeIndicesStatsQueryCacheSize] :: NodeIndicesStats -> Maybe Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsRecoveryCurrentAsSource] :: NodeIndicesStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeIndicesStatsRecoveryCurrentAsTarget] :: NodeIndicesStats -> Maybe Int
+ Database.Bloodhound.Types: [nodeIndicesStatsRecoveryThrottleTime] :: NodeIndicesStats -> Maybe NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsRefreshTotalTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsRefreshTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsSearchFetchCurrent] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsSearchFetchTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsSearchFetchTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsSearchOpenContexts] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsSearchQueryCurrent] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsSearchQueryTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsSearchQueryTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsSegCount] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsSegFixedBitSetMemory] :: NodeIndicesStats -> Maybe Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsSegIndexWriterMaxMemory] :: NodeIndicesStats -> Maybe Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsSegIndexWriterMemory] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsSegMemory] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsSegVersionMapMemory] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsStoreSize] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsStoreThrottleTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsSuggestCurrent] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsSuggestTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsSuggestTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsTranslogOps] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsTranslogSize] :: NodeIndicesStats -> Bytes
+ Database.Bloodhound.Types: [nodeIndicesStatsWarmerCurrent] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeIndicesStatsWarmerTotalTime] :: NodeIndicesStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeIndicesStatsWarmerTotal] :: NodeIndicesStats -> Int
+ Database.Bloodhound.Types: [nodeInfoBuild] :: NodeInfo -> BuildHash
+ Database.Bloodhound.Types: [nodeInfoESVersion] :: NodeInfo -> VersionNumber
+ Database.Bloodhound.Types: [nodeInfoFullId] :: NodeInfo -> FullNodeId
+ Database.Bloodhound.Types: [nodeInfoHTTPAddress] :: NodeInfo -> EsAddress
+ Database.Bloodhound.Types: [nodeInfoHTTP] :: NodeInfo -> NodeHTTPInfo
+ Database.Bloodhound.Types: [nodeInfoHost] :: NodeInfo -> Server
+ Database.Bloodhound.Types: [nodeInfoIP] :: NodeInfo -> Server
+ Database.Bloodhound.Types: [nodeInfoJVM] :: NodeInfo -> NodeJVMInfo
+ Database.Bloodhound.Types: [nodeInfoName] :: NodeInfo -> NodeName
+ Database.Bloodhound.Types: [nodeInfoNetwork] :: NodeInfo -> NodeNetworkInfo
+ Database.Bloodhound.Types: [nodeInfoOS] :: NodeInfo -> NodeOSInfo
+ Database.Bloodhound.Types: [nodeInfoPlugins] :: NodeInfo -> [NodePluginInfo]
+ Database.Bloodhound.Types: [nodeInfoProcess] :: NodeInfo -> NodeProcessInfo
+ Database.Bloodhound.Types: [nodeInfoSettings] :: NodeInfo -> Object
+ Database.Bloodhound.Types: [nodeInfoThreadPool] :: NodeInfo -> NodeThreadPoolsInfo
+ Database.Bloodhound.Types: [nodeInfoTransportAddress] :: NodeInfo -> EsAddress
+ Database.Bloodhound.Types: [nodeInfoTransport] :: NodeInfo -> NodeTransportInfo
+ Database.Bloodhound.Types: [nodeJVMInfoMemoryInfo] :: NodeJVMInfo -> JVMMemoryInfo
+ Database.Bloodhound.Types: [nodeJVMInfoMemoryPoolsGCCollectors] :: NodeJVMInfo -> [JVMGCCollector]
+ Database.Bloodhound.Types: [nodeJVMInfoMemoryPools] :: NodeJVMInfo -> [JVMMemoryPool]
+ Database.Bloodhound.Types: [nodeJVMInfoStartTime] :: NodeJVMInfo -> UTCTime
+ Database.Bloodhound.Types: [nodeJVMInfoVMVendor] :: NodeJVMInfo -> Text
+ Database.Bloodhound.Types: [nodeJVMPID] :: NodeJVMInfo -> PID
+ Database.Bloodhound.Types: [nodeJVMStatsDirectBufferPool] :: NodeJVMStats -> JVMBufferPoolStats
+ Database.Bloodhound.Types: [nodeJVMStatsGCOldCollector] :: NodeJVMStats -> JVMGCStats
+ Database.Bloodhound.Types: [nodeJVMStatsGCYoungCollector] :: NodeJVMStats -> JVMGCStats
+ Database.Bloodhound.Types: [nodeJVMStatsHeapCommitted] :: NodeJVMStats -> Bytes
+ Database.Bloodhound.Types: [nodeJVMStatsHeapMax] :: NodeJVMStats -> Bytes
+ Database.Bloodhound.Types: [nodeJVMStatsHeapUsedPercent] :: NodeJVMStats -> Int
+ Database.Bloodhound.Types: [nodeJVMStatsHeapUsed] :: NodeJVMStats -> Bytes
+ Database.Bloodhound.Types: [nodeJVMStatsMappedBufferPool] :: NodeJVMStats -> JVMBufferPoolStats
+ Database.Bloodhound.Types: [nodeJVMStatsNonHeapCommitted] :: NodeJVMStats -> Bytes
+ Database.Bloodhound.Types: [nodeJVMStatsNonHeapUsed] :: NodeJVMStats -> Bytes
+ Database.Bloodhound.Types: [nodeJVMStatsOldPool] :: NodeJVMStats -> JVMPoolStats
+ Database.Bloodhound.Types: [nodeJVMStatsPeakThreadsCount] :: NodeJVMStats -> Int
+ Database.Bloodhound.Types: [nodeJVMStatsSurvivorPool] :: NodeJVMStats -> JVMPoolStats
+ Database.Bloodhound.Types: [nodeJVMStatsThreadsCount] :: NodeJVMStats -> Int
+ Database.Bloodhound.Types: [nodeJVMStatsTimestamp] :: NodeJVMStats -> UTCTime
+ Database.Bloodhound.Types: [nodeJVMStatsUptime] :: NodeJVMStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeJVMStatsYoungPool] :: NodeJVMStats -> JVMPoolStats
+ Database.Bloodhound.Types: [nodeJVMVMName] :: NodeJVMInfo -> Text
+ Database.Bloodhound.Types: [nodeJVMVMVersion] :: NodeJVMInfo -> VersionNumber
+ Database.Bloodhound.Types: [nodeJVMVersion] :: NodeJVMInfo -> VersionNumber
+ Database.Bloodhound.Types: [nodeName] :: NodeName -> Text
+ Database.Bloodhound.Types: [nodeNetIfaceAddress] :: NodeNetworkInterface -> Server
+ Database.Bloodhound.Types: [nodeNetIfaceMacAddress] :: NodeNetworkInterface -> MacAddress
+ Database.Bloodhound.Types: [nodeNetIfaceName] :: NodeNetworkInterface -> NetworkInterfaceName
+ Database.Bloodhound.Types: [nodeNetTCPActiveOpens] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetTCPAttemptFails] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetTCPCurrEstab] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetTCPEstabResets] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetTCPInErrs] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetTCPInSegs] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetTCPOutRSTs] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetTCPOutSegs] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetTCPPassiveOpens] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetTCPRetransSegs] :: NodeNetworkStats -> Int
+ Database.Bloodhound.Types: [nodeNetworkPrimaryInterface] :: NodeNetworkInfo -> NodeNetworkInterface
+ Database.Bloodhound.Types: [nodeNetworkRefreshInterval] :: NodeNetworkInfo -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeOSAvailableProcessors] :: NodeOSInfo -> Int
+ Database.Bloodhound.Types: [nodeOSCPUIdle] :: NodeOSStats -> Int
+ Database.Bloodhound.Types: [nodeOSCPUInfo] :: NodeOSInfo -> CPUInfo
+ Database.Bloodhound.Types: [nodeOSCPUStolen] :: NodeOSStats -> Int
+ Database.Bloodhound.Types: [nodeOSCPUSys] :: NodeOSStats -> Int
+ Database.Bloodhound.Types: [nodeOSCPUUsage] :: NodeOSStats -> Int
+ Database.Bloodhound.Types: [nodeOSCPUUser] :: NodeOSStats -> Int
+ Database.Bloodhound.Types: [nodeOSLoad] :: NodeOSStats -> Maybe LoadAvgs
+ Database.Bloodhound.Types: [nodeOSMemActualFree] :: NodeOSStats -> Bytes
+ Database.Bloodhound.Types: [nodeOSMemActualUsed] :: NodeOSStats -> Bytes
+ Database.Bloodhound.Types: [nodeOSMemFreePercent] :: NodeOSStats -> Int
+ Database.Bloodhound.Types: [nodeOSMemFree] :: NodeOSStats -> Bytes
+ Database.Bloodhound.Types: [nodeOSMemUsedPercent] :: NodeOSStats -> Int
+ Database.Bloodhound.Types: [nodeOSMemUsed] :: NodeOSStats -> Bytes
+ Database.Bloodhound.Types: [nodeOSMem] :: NodeOSInfo -> Bytes
+ Database.Bloodhound.Types: [nodeOSRefreshInterval] :: NodeOSInfo -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeOSSwapFree] :: NodeOSStats -> Bytes
+ Database.Bloodhound.Types: [nodeOSSwapUsed] :: NodeOSStats -> Bytes
+ Database.Bloodhound.Types: [nodeOSSwap] :: NodeOSInfo -> Bytes
+ Database.Bloodhound.Types: [nodeOSTimestamp] :: NodeOSStats -> UTCTime
+ Database.Bloodhound.Types: [nodeOSUptime] :: NodeOSStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodePluginDescription] :: NodePluginInfo -> Text
+ Database.Bloodhound.Types: [nodePluginJVM] :: NodePluginInfo -> Bool
+ Database.Bloodhound.Types: [nodePluginName] :: NodePluginInfo -> PluginName
+ Database.Bloodhound.Types: [nodePluginSite] :: NodePluginInfo -> Bool
+ Database.Bloodhound.Types: [nodePluginVersion] :: NodePluginInfo -> MaybeNA VersionNumber
+ Database.Bloodhound.Types: [nodeProcessCPUPercent] :: NodeProcessStats -> Int
+ Database.Bloodhound.Types: [nodeProcessCPUSys] :: NodeProcessStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeProcessCPUTotal] :: NodeProcessStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeProcessCPUUser] :: NodeProcessStats -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeProcessId] :: NodeProcessInfo -> PID
+ Database.Bloodhound.Types: [nodeProcessMLockAll] :: NodeProcessInfo -> Bool
+ Database.Bloodhound.Types: [nodeProcessMaxFileDescriptors] :: NodeProcessInfo -> Int
+ Database.Bloodhound.Types: [nodeProcessMemResident] :: NodeProcessStats -> Bytes
+ Database.Bloodhound.Types: [nodeProcessMemShare] :: NodeProcessStats -> Bytes
+ Database.Bloodhound.Types: [nodeProcessMemTotalVirtual] :: NodeProcessStats -> Bytes
+ Database.Bloodhound.Types: [nodeProcessOpenFDs] :: NodeProcessStats -> Int
+ Database.Bloodhound.Types: [nodeProcessRefreshInterval] :: NodeProcessInfo -> NominalDiffTime
+ Database.Bloodhound.Types: [nodeProcessTimestamp] :: NodeProcessStats -> UTCTime
+ Database.Bloodhound.Types: [nodeStatsBreakersStats] :: NodeStats -> Maybe NodeBreakersStats
+ Database.Bloodhound.Types: [nodeStatsFS] :: NodeStats -> NodeFSStats
+ Database.Bloodhound.Types: [nodeStatsFieldDataBreaker] :: NodeBreakersStats -> NodeBreakerStats
+ Database.Bloodhound.Types: [nodeStatsFullId] :: NodeStats -> FullNodeId
+ Database.Bloodhound.Types: [nodeStatsHTTP] :: NodeStats -> NodeHTTPStats
+ Database.Bloodhound.Types: [nodeStatsIndices] :: NodeStats -> NodeIndicesStats
+ Database.Bloodhound.Types: [nodeStatsJVM] :: NodeStats -> NodeJVMStats
+ Database.Bloodhound.Types: [nodeStatsName] :: NodeStats -> NodeName
+ Database.Bloodhound.Types: [nodeStatsNetwork] :: NodeStats -> NodeNetworkStats
+ Database.Bloodhound.Types: [nodeStatsOS] :: NodeStats -> NodeOSStats
+ Database.Bloodhound.Types: [nodeStatsParentBreaker] :: NodeBreakersStats -> NodeBreakerStats
+ Database.Bloodhound.Types: [nodeStatsProcess] :: NodeStats -> NodeProcessStats
+ Database.Bloodhound.Types: [nodeStatsRequestBreaker] :: NodeBreakersStats -> NodeBreakerStats
+ Database.Bloodhound.Types: [nodeStatsThreadPool] :: NodeStats -> NodeThreadPoolsStats
+ Database.Bloodhound.Types: [nodeStatsTransport] :: NodeStats -> NodeTransportStats
+ Database.Bloodhound.Types: [nodeThreadPoolActive] :: NodeThreadPoolStats -> Int
+ Database.Bloodhound.Types: [nodeThreadPoolCompleted] :: NodeThreadPoolStats -> Int
+ Database.Bloodhound.Types: [nodeThreadPoolKeepalive] :: NodeThreadPoolInfo -> Maybe NominalDiffTime
+ Database.Bloodhound.Types: [nodeThreadPoolLargest] :: NodeThreadPoolStats -> Int
+ Database.Bloodhound.Types: [nodeThreadPoolMax] :: NodeThreadPoolInfo -> Maybe Int
+ Database.Bloodhound.Types: [nodeThreadPoolMin] :: NodeThreadPoolInfo -> Maybe Int
+ Database.Bloodhound.Types: [nodeThreadPoolQueueSize] :: NodeThreadPoolInfo -> ThreadPoolSize
+ Database.Bloodhound.Types: [nodeThreadPoolQueue] :: NodeThreadPoolStats -> Int
+ Database.Bloodhound.Types: [nodeThreadPoolRejected] :: NodeThreadPoolStats -> Int
+ Database.Bloodhound.Types: [nodeThreadPoolThreads] :: NodeThreadPoolStats -> Int
+ Database.Bloodhound.Types: [nodeThreadPoolType] :: NodeThreadPoolInfo -> ThreadPoolType
+ Database.Bloodhound.Types: [nodeThreadPoolsBulk] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsFetchShardStarted] :: NodeThreadPoolsInfo -> Maybe NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsFetchShardStore] :: NodeThreadPoolsInfo -> Maybe NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsFlush] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsGeneric] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsGet] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsIndex] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsListener] :: NodeThreadPoolsInfo -> Maybe NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsManagement] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsMerge] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsOptimize] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsPercolate] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsRefresh] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsSearch] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsSnapshot] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsBulk] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsFetchShardStarted] :: NodeThreadPoolsStats -> Maybe NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsFetchShardStore] :: NodeThreadPoolsStats -> Maybe NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsFlush] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsGeneric] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsGet] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsIndex] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsListener] :: NodeThreadPoolsStats -> Maybe NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsManagement] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsMerge] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsOptimize] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsPercolate] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsRefresh] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsSearch] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsSnapshot] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsSuggest] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsStatsWarmer] :: NodeThreadPoolsStats -> NodeThreadPoolStats
+ Database.Bloodhound.Types: [nodeThreadPoolsSuggest] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeThreadPoolsWarmer] :: NodeThreadPoolsInfo -> NodeThreadPoolInfo
+ Database.Bloodhound.Types: [nodeTransportAddress] :: NodeTransportInfo -> BoundTransportAddress
+ Database.Bloodhound.Types: [nodeTransportCount] :: NodeTransportStats -> Int
+ Database.Bloodhound.Types: [nodeTransportProfiles] :: NodeTransportInfo -> [BoundTransportAddress]
+ Database.Bloodhound.Types: [nodeTransportRXCount] :: NodeTransportStats -> Int
+ Database.Bloodhound.Types: [nodeTransportRXSize] :: NodeTransportStats -> Bytes
+ Database.Bloodhound.Types: [nodeTransportServerOpen] :: NodeTransportStats -> Int
+ Database.Bloodhound.Types: [nodeTransportTXSize] :: NodeTransportStats -> Bytes
+ Database.Bloodhound.Types: [nodesClusterName] :: NodesInfo -> ClusterName
+ Database.Bloodhound.Types: [nodesInfo] :: NodesInfo -> [NodeInfo]
+ Database.Bloodhound.Types: [nodesStatsClusterName] :: NodesStats -> ClusterName
+ Database.Bloodhound.Types: [nodesStats] :: NodesStats -> [NodeStats]
+ Database.Bloodhound.Types: [pid] :: PID -> Int
+ Database.Bloodhound.Types: [pluginName] :: PluginName -> Text
+ Database.Bloodhound.Types: [precisionThreshold] :: CardinalityAggregation -> Maybe Int
+ Database.Bloodhound.Types: [publishAddress] :: BoundTransportAddress -> EsAddress
+ Database.Bloodhound.Types: [repoUpdateVerify] :: SnapshotRepoUpdateSettings -> Bool
+ Database.Bloodhound.Types: [restoreOverrideReplicas] :: RestoreIndexSettings -> Maybe ReplicaCount
+ Database.Bloodhound.Types: [rrPattern] :: RestoreRenamePattern -> Text
+ Database.Bloodhound.Types: [shardId] :: ShardId -> Int
+ Database.Bloodhound.Types: [snapIgnoreUnavailable] :: SnapshotCreateSettings -> Bool
+ Database.Bloodhound.Types: [snapIncludeGlobalState] :: SnapshotCreateSettings -> Bool
+ Database.Bloodhound.Types: [snapIndices] :: SnapshotCreateSettings -> Maybe IndexSelection
+ Database.Bloodhound.Types: [snapInfoDuration] :: SnapshotInfo -> NominalDiffTime
+ Database.Bloodhound.Types: [snapInfoEndTime] :: SnapshotInfo -> UTCTime
+ Database.Bloodhound.Types: [snapInfoFailures] :: SnapshotInfo -> [SnapshotShardFailure]
+ Database.Bloodhound.Types: [snapInfoIndices] :: SnapshotInfo -> [IndexName]
+ Database.Bloodhound.Types: [snapInfoName] :: SnapshotInfo -> SnapshotName
+ Database.Bloodhound.Types: [snapInfoShards] :: SnapshotInfo -> ShardResult
+ Database.Bloodhound.Types: [snapInfoStartTime] :: SnapshotInfo -> UTCTime
+ Database.Bloodhound.Types: [snapInfoState] :: SnapshotInfo -> SnapshotState
+ Database.Bloodhound.Types: [snapPartial] :: SnapshotCreateSettings -> Bool
+ Database.Bloodhound.Types: [snapRestoreIgnoreIndexSettings] :: SnapshotRestoreSettings -> Maybe (NonEmpty Text)
+ Database.Bloodhound.Types: [snapRestoreIgnoreUnavailable] :: SnapshotRestoreSettings -> Bool
+ Database.Bloodhound.Types: [snapRestoreIncludeAliases] :: SnapshotRestoreSettings -> Bool
+ Database.Bloodhound.Types: [snapRestoreIncludeGlobalState] :: SnapshotRestoreSettings -> Bool
+ Database.Bloodhound.Types: [snapRestoreIndexSettingsOverrides] :: SnapshotRestoreSettings -> Maybe RestoreIndexSettings
+ Database.Bloodhound.Types: [snapRestoreIndices] :: SnapshotRestoreSettings -> Maybe IndexSelection
+ Database.Bloodhound.Types: [snapRestorePartial] :: SnapshotRestoreSettings -> Bool
+ Database.Bloodhound.Types: [snapRestoreRenamePattern] :: SnapshotRestoreSettings -> Maybe RestoreRenamePattern
+ Database.Bloodhound.Types: [snapRestoreRenameReplacement] :: SnapshotRestoreSettings -> Maybe (NonEmpty RestoreRenameToken)
+ Database.Bloodhound.Types: [snapRestoreWaitForCompletion] :: SnapshotRestoreSettings -> Bool
+ Database.Bloodhound.Types: [snapShardFailureIndex] :: SnapshotShardFailure -> IndexName
+ Database.Bloodhound.Types: [snapShardFailureNodeId] :: SnapshotShardFailure -> Maybe NodeName
+ Database.Bloodhound.Types: [snapShardFailureReason] :: SnapshotShardFailure -> Text
+ Database.Bloodhound.Types: [snapShardFailureShardId] :: SnapshotShardFailure -> ShardId
+ Database.Bloodhound.Types: [snapWaitForCompletion] :: SnapshotCreateSettings -> Bool
+ Database.Bloodhound.Types: [snapshotName] :: SnapshotName -> Text
+ Database.Bloodhound.Types: [snapshotNodeVerifications] :: SnapshotVerification -> [SnapshotNodeVerification]
+ Database.Bloodhound.Types: [snapshotRepoName] :: SnapshotRepoName -> Text
+ Database.Bloodhound.Types: [snapshotRepoType] :: SnapshotRepoType -> Text
+ Database.Bloodhound.Types: [snvFullId] :: SnapshotNodeVerification -> FullNodeId
+ Database.Bloodhound.Types: [snvNodeName] :: SnapshotNodeVerification -> NodeName
+ Database.Bloodhound.Types: [unMaybeNA] :: MaybeNA a -> Maybe a
+ Database.Bloodhound.Types: [versionNumber] :: VersionNumber -> Version
+ Database.Bloodhound.Types: class SnapshotRepo r
+ Database.Bloodhound.Types: data BoundTransportAddress
+ Database.Bloodhound.Types: data CPUInfo
+ Database.Bloodhound.Types: data CardinalityAggregation
+ Database.Bloodhound.Types: data FsSnapshotRepo
+ Database.Bloodhound.Types: data GenericSnapshotRepo
+ Database.Bloodhound.Types: data JVMBufferPoolStats
+ Database.Bloodhound.Types: data JVMGCStats
+ Database.Bloodhound.Types: data JVMMemoryInfo
+ Database.Bloodhound.Types: data JVMPoolStats
+ Database.Bloodhound.Types: data LoadAvgs
+ Database.Bloodhound.Types: data NodeBreakerStats
+ Database.Bloodhound.Types: data NodeBreakersStats
+ Database.Bloodhound.Types: data NodeDataPathStats
+ Database.Bloodhound.Types: data NodeFSStats
+ Database.Bloodhound.Types: data NodeFSTotalStats
+ Database.Bloodhound.Types: data NodeHTTPInfo
+ Database.Bloodhound.Types: data NodeHTTPStats
+ Database.Bloodhound.Types: data NodeIndicesStats
+ Database.Bloodhound.Types: data NodeInfo
+ Database.Bloodhound.Types: data NodeJVMInfo
+ Database.Bloodhound.Types: data NodeJVMStats
+ Database.Bloodhound.Types: data NodeNetworkInfo
+ Database.Bloodhound.Types: data NodeNetworkInterface
+ Database.Bloodhound.Types: data NodeNetworkStats
+ Database.Bloodhound.Types: data NodeOSInfo
+ Database.Bloodhound.Types: data NodeOSStats
+ Database.Bloodhound.Types: data NodePluginInfo
+ Database.Bloodhound.Types: data NodeProcessInfo
+ Database.Bloodhound.Types: data NodeProcessStats
+ Database.Bloodhound.Types: data NodeSelection
+ Database.Bloodhound.Types: data NodeSelector
+ Database.Bloodhound.Types: data NodeStats
+ Database.Bloodhound.Types: data NodeThreadPoolInfo
+ Database.Bloodhound.Types: data NodeThreadPoolStats
+ Database.Bloodhound.Types: data NodeThreadPoolsInfo
+ Database.Bloodhound.Types: data NodeThreadPoolsStats
+ Database.Bloodhound.Types: data NodeTransportInfo
+ Database.Bloodhound.Types: data NodeTransportStats
+ Database.Bloodhound.Types: data NodesInfo
+ Database.Bloodhound.Types: data NodesStats
+ Database.Bloodhound.Types: data RRGroupRefNum
+ Database.Bloodhound.Types: data RestoreIndexSettings
+ Database.Bloodhound.Types: data RestoreRenameToken
+ Database.Bloodhound.Types: data SnapshotCreateSettings
+ Database.Bloodhound.Types: data SnapshotInfo
+ Database.Bloodhound.Types: data SnapshotNodeVerification
+ Database.Bloodhound.Types: data SnapshotPattern
+ Database.Bloodhound.Types: data SnapshotRepoConversionError
+ Database.Bloodhound.Types: data SnapshotRepoPattern
+ Database.Bloodhound.Types: data SnapshotRepoSelection
+ Database.Bloodhound.Types: data SnapshotRepoUpdateSettings
+ Database.Bloodhound.Types: data SnapshotRestoreSettings
+ Database.Bloodhound.Types: data SnapshotSelection
+ Database.Bloodhound.Types: data SnapshotShardFailure
+ Database.Bloodhound.Types: data SnapshotState
+ Database.Bloodhound.Types: data ThreadPoolSize
+ Database.Bloodhound.Types: data ThreadPoolType
+ Database.Bloodhound.Types: defaultSnapshotCreateSettings :: SnapshotCreateSettings
+ Database.Bloodhound.Types: defaultSnapshotRepoUpdateSettings :: SnapshotRepoUpdateSettings
+ Database.Bloodhound.Types: defaultSnapshotRestoreSettings :: SnapshotRestoreSettings
+ Database.Bloodhound.Types: fromGSnapshotRepo :: SnapshotRepo r => GenericSnapshotRepo -> Either SnapshotRepoConversionError r
+ Database.Bloodhound.Types: gigabytes :: Int -> Bytes
+ Database.Bloodhound.Types: instance (Data.Aeson.Types.FromJSON.FromJSON a, Database.Bloodhound.Types.BucketAggregation a) => Data.Aeson.Types.FromJSON.FromJSON (Database.Bloodhound.Types.Bucket a)
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.AliasRouting
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.AllocationPolicy
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.AllowLeadingWildcard
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.AnalyzeWildcard
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Analyzer
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.BoolMatch
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.BoolQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.BooleanOperator
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Boost
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.BoostTerms
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.BoostingQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.BoundTransportAddress
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.BucketValue
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.BuildHash
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Bytes
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.CPUInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.CacheKey
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.CacheName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ClusterName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.CommonMinimumMatch
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.CommonTermsQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.CompoundFormat
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.CutoffFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.DateHistogramResult
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.DateRangeResult
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.DisMaxQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.DisableCoord
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Distance
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.DistanceType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.DistanceUnit
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.DocId
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.DocVersion
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.EnablePositionIncrements
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.EsAddress
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.EsError
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Existence
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.FSType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.FieldName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.FieldOrFields
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Filter
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.FilteredQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.FullNodeId
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Fuzziness
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.FuzzyQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.GeneratePhraseQueries
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.GeoBoundingBox
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.GeoBoundingBoxConstraint
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.GeoFilterType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.HasChildQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.HasParentQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.IgnoreTermFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.IndexAliasCreate
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.IndexAliasRouting
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.IndexAliasesSummary
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.IndexName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.IndexSettings
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.IndexSettingsSummary
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.IndicesQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.InitialShardCount
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.JVMBufferPoolStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.JVMGCCollector
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.JVMGCStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.JVMMemoryInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.JVMMemoryPool
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.JVMPoolStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.JVMVersion
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.LatLon
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Lenient
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.LoadAvgs
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Locale
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.LowercaseExpanded
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MS
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MacAddress
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MappingName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MatchQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MatchQueryType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MaxDocFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MaxExpansions
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MaxQueryTerms
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MaxWordLength
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MinDocFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MinWordLength
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MinimumMatch
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MinimumTermFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MissingResult
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MoreLikeThisQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MultiMatchQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.MultiMatchQueryType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NestedQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NetworkInterfaceName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeBreakerStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeBreakersStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeDataPathStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeFSStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeFSTotalStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeHTTPInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeHTTPStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeIndicesStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeJVMInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeJVMStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeNetworkInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeNetworkInterface
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeNetworkStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeOSInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeOSStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodePluginInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeProcessInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeProcessStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeThreadPoolStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeTransportInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodeTransportStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodesInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NodesStats
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NominalDiffTimeJSON
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.NullValue
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.OptimizeBbox
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.PID
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.POSIXMS
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.PercentMatch
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.PhraseSlop
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.PluginName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.PrefixLength
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.PrefixQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Query
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.QueryPath
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.QueryString
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.QueryStringQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.RangeExecution
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.RangeQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.RangeValue
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Regexp
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.RegexpFlag
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.RegexpFlags
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.RegexpQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ReplicaBounds
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ReplicaCount
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.RoutingValue
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ScoreType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ScrollId
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SearchAliasRouting
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ShardCount
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ShardId
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ShardResult
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SimpleQueryFlag
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SnapshotInfo
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SnapshotName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SnapshotRepoName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SnapshotRepoType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SnapshotShardFailure
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SnapshotState
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.SnapshotVerification
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Status
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.StopWord
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.StringlyTypedDouble
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.TemplateName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.TemplatePattern
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Term
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.TermsResult
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ThreadPoolSize
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ThreadPoolType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Tiebreaker
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.TypeName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.UpdatableIndexSetting
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Version
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.VersionNumber
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.ZeroTermsQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Database.Bloodhound.Types.EsResult a)
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Database.Bloodhound.Types.EsResultFound a)
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Database.Bloodhound.Types.Hit a)
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Database.Bloodhound.Types.MaybeNA a)
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Database.Bloodhound.Types.SearchHits a)
+ Database.Bloodhound.Types: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Database.Bloodhound.Types.SearchResult a)
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Aggregation
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.AliasRouting
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.AllocationPolicy
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.AllowLeadingWildcard
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.AnalyzeWildcard
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Analyzer
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.BoolMatch
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.BoolQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.BooleanOperator
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Boost
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.BoostTerms
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.BoostingQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.BuildHash
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Bytes
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.CacheKey
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.CacheName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.CollectionMode
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.CommonMinimumMatch
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.CommonTermsQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.CompoundFormat
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.CutoffFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.DateMathExpr
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.DateRangeAggRange
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.DateRangeAggregation
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.DisMaxQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.DisableCoord
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Distance
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.DistanceType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.DistanceUnit
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.DocId
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.DocVersion
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.EnablePositionIncrements
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Exclude
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.ExecutionHint
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Existence
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.ExternalDocVersion
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.FSType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.FieldHighlight
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.FieldName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.FieldOrFields
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Filter
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.FilteredQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.From
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Fuzziness
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.FuzzyQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.GeneratePhraseQueries
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.GeoBoundingBox
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.GeoBoundingBoxConstraint
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.GeoFilterType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.GeoPoint
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.HasChildQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.HasParentQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.HighlightEncoder
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.HighlightSettings
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Highlights
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IgnoreTermFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Include
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IndexAlias
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IndexAliasAction
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IndexAliasCreate
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IndexAliasName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IndexAliasRouting
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IndexName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IndexSettings
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IndexTemplate
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.IndicesQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.InitialShardCount
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Interval
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.LatLon
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Lenient
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Locale
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.LowercaseExpanded
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MappingName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MatchQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MatchQueryType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MaxDocFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MaxExpansions
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MaxQueryTerms
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MaxWordLength
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MinDocFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MinWordLength
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MinimumMatch
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MinimumTermFrequency
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Missing
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MoreLikeThisQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MultiMatchQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.MultiMatchQueryType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.NestedQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.NominalDiffTimeJSON
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.NullValue
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.OptimizeBbox
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Pattern
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.PatternOrPatterns
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.PercentMatch
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.PhraseSlop
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.PrefixLength
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.PrefixQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Query
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.QueryPath
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.QueryString
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.QueryStringQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.RangeExecution
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.RangeQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.RegexpFlags
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.RegexpQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.ReplicaBounds
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.ReplicaCount
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.RestoreIndexSettings
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.RestoreRenamePattern
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.RoutingValue
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.ScoreType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.ScrollId
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Search
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.SearchAliasRouting
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.ShardCount
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.SimpleQueryFlag
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Size
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.SnapshotName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.SnapshotRepoName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.SnapshotRepoType
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.SortMode
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.SortOrder
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.SortSpec
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Source
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.StopWord
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.TemplateName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.TemplatePattern
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Term
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.TermInclusion
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.TermOrder
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Tiebreaker
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.TypeName
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.UpdatableIndexSetting
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.Version
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.VersionNumber
+ Database.Bloodhound.Types: instance Data.Aeson.Types.ToJSON.ToJSON Database.Bloodhound.Types.ZeroTermsQuery
+ Database.Bloodhound.Types: instance Database.Bloodhound.Types.SnapshotRepo Database.Bloodhound.Types.FsSnapshotRepo
+ Database.Bloodhound.Types: instance Database.Bloodhound.Types.SnapshotRepo Database.Bloodhound.Types.GenericSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.BoundTransportAddress
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.BuildHash
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.CPUInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.CardinalityAggregation
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.ClusterName
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.EsAddress
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.FullNodeId
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.GenericSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.JVMBufferPoolStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.JVMGCCollector
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.JVMGCStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.JVMMemoryPool
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.JVMPoolStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.LoadAvgs
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.MacAddress
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NetworkInterfaceName
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeBreakerStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeBreakersStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeFSStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeHTTPInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeHTTPStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeName
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeNetworkInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeNetworkInterface
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeProcessInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeSelection
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeSelector
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeTransportInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodesInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.NodesStats
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.PID
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.PluginName
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.RRGroupRefNum
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.RestoreIndexSettings
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.RestoreRenamePattern
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.RestoreRenameToken
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.ShardId
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotName
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotNodeVerification
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotPattern
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotRepoConversionError
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotRepoName
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotRepoPattern
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotRepoSelection
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotRepoType
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotRepoUpdateSettings
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotSelection
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotShardFailure
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotState
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.SnapshotVerification
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.ThreadPoolSize
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.ThreadPoolType
+ Database.Bloodhound.Types: instance GHC.Classes.Eq Database.Bloodhound.Types.VersionNumber
+ Database.Bloodhound.Types: instance GHC.Classes.Eq a => GHC.Classes.Eq (Database.Bloodhound.Types.MaybeNA a)
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.BuildHash
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.ClusterName
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.EsAddress
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.FullNodeId
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.MacAddress
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.NetworkInterfaceName
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.NodeName
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.PluginName
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.RRGroupRefNum
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.RestoreRenamePattern
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.SnapshotName
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.SnapshotRepoName
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.SnapshotRepoType
+ Database.Bloodhound.Types: instance GHC.Classes.Ord Database.Bloodhound.Types.VersionNumber
+ Database.Bloodhound.Types: instance GHC.Enum.Bounded Database.Bloodhound.Types.RRGroupRefNum
+ Database.Bloodhound.Types: instance GHC.Exception.Exception Database.Bloodhound.Types.SnapshotRepoConversionError
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Aggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0AliasRouting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0AllocationPolicy
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0AllowLeadingWildcard
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0AnalyzeWildcard
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Analyzer
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0BoolMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0BoolQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0BooleanOperator
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Boost
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0BoostTerms
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0BoostingQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0BoundTransportAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0BuildHash
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0BulkOperation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Bytes
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CacheKey
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CacheName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CardinalityAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ClusterName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CollectionMode
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CommonHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CommonMinimumMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CompoundFormat
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0CutoffFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DateMathAnchor
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DateMathExpr
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DateMathModifier
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DateMathUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DateRangeAggRange
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DateRangeAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DateRangeResult
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DefaultSort
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DisMaxQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DisableCoord
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Distance
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DistanceRange
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DistanceType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DocId
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DocVersion
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0DocumentParent
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0EnablePositionIncrements
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0EsAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0EsError
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0EsProtocolException
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0EsResult
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0EsResultFound
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Exclude
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ExecutionHint
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Existence
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ExternalDocVersion
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FSType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FastVectorHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FieldDefinition
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FieldHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FieldName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FieldOrFields
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FieldType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FilterAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FilteredQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0From
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FullNodeId
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Fuzziness
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0FuzzyQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GeneratePhraseQueries
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GenericSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GeoBoundingBox
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GeoBoundingBoxConstraint
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GeoFilterType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GeoPoint
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GreaterThan
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GreaterThanD
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GreaterThanEq
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0GreaterThanEqD
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0HasChildQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0HasParentQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0HighlightEncoder
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0HighlightSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0HighlightTag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Highlights
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Hit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IgnoreTermFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Include
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexAlias
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexAliasAction
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexAliasCreate
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexAliasName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexAliasRouting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexAliasSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexAliasesSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexDocumentSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexOptimizationSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndexSettingsSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0IndicesQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0InitialShardCount
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0JVMBufferPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0JVMGCCollector
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0JVMGCStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0JVMMemoryPool
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0JVMPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0LatLon
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Lenient
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0LessThan
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0LessThanD
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0LessThanEq
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0LessThanEqD
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0LoadAvgs
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Locale
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0LowercaseExpanded
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MacAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Mapping
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MappingField
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MappingName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MatchQueryType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MaxDocFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MaxExpansions
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MaxQueryTerms
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MaxWordLength
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MinDocFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MinWordLength
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MinimumMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MinimumMatchHighLow
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MinimumTermFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Missing
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MissingAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0MultiMatchQueryType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NestedQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NetworkInterfaceName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeAttrFilter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeAttrName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeBreakerStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeBreakersStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeFSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeHTTPInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeHTTPStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeNetworkInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeNetworkInterface
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeProcessInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeSelector
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeTransportInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodesInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NodesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NonPostings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0NullValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0OpenCloseIndex
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0OptimizeBbox
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0PID
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Pattern
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0PatternOrPatterns
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0PercentMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0PhraseSlop
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0PlainHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0PluginName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0PostingsHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0PrefixLength
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0PrefixQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0QueryPath
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0QueryString
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RRGroupRefNum
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RangeExecution
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RangeQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Regexp
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RegexpFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RegexpFlags
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RegexpQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ReplicaBounds
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ReplicaCount
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RestoreIndexSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RestoreRenamePattern
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RestoreRenameToken
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0RoutingValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ScoreType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Script
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ScrollId
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Search
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SearchAliasRouting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SearchHits
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SearchResult
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SearchType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ShardCount
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ShardId
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ShardResult
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Size
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotNodeVerification
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotPattern
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotRepoConversionError
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotRepoName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotRepoPattern
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotRepoSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotRepoType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotRepoUpdateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotShardFailure
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotState
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SnapshotVerification
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SortMode
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SortOrder
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0SortSpec
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Source
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Status
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0StopWord
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0TemplateName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0TemplatePattern
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Term
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0TermInclusion
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0TermOrder
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ThreadPoolSize
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ThreadPoolType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Tiebreaker
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0TypeName
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ValueCountAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0Version
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0VersionControl
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0VersionNumber
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_0ZeroTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_10Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_10Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_10RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_10SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_10UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_11Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_11Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_11RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_11SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_11UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_12Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_12Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_12RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_12UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_13Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_13Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_13RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_13UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_14Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_14Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_14RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_14UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_15Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_15Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_15RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_15UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_16Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_16Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_16UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_17Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_17Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_17UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_18Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_18UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_19Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_19UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1Aggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1AliasRouting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1AllocationPolicy
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1BoolMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1BooleanOperator
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1BulkOperation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1CollectionMode
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1CommonMinimumMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1CompoundFormat
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1DateMathAnchor
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1DateMathModifier
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1DateMathUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1DateRangeAggRange
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1DistanceType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1ExecutionHint
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1FSType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1FieldOrFields
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1FieldType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1GeoFilterType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1HighlightEncoder
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1HighlightSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1HighlightTag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1IndexAliasAction
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1IndexSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1InitialShardCount
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1MatchQueryType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1Missing
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1MultiMatchQueryType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1NodeSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1NodeSelector
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1OpenCloseIndex
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1OptimizeBbox
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1PatternOrPatterns
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1RangeExecution
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1RegexpFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1RegexpFlags
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1ReplicaBounds
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1RestoreRenameToken
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1ScoreType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SearchType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SnapshotPattern
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SnapshotRepoConversionError
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SnapshotRepoPattern
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SnapshotRepoSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SnapshotSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SnapshotState
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SortMode
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SortOrder
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1SortSpec
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1Source
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1TermInclusion
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1ThreadPoolSize
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1ThreadPoolType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1ValueCountAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1VersionControl
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_1ZeroTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_20Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_20UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_21Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_21UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_22Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_22UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_23Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_23UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_24Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_24UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_25Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_25UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_26Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_26UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_27UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2Aggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2AllocationPolicy
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2BoolMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2BulkOperation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2DateMathModifier
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2DateMathUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2DateRangeAggRange
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2DistanceType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2ExecutionHint
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2FieldType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2HighlightSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2InitialShardCount
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2Missing
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2MultiMatchQueryType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2NodeSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2NodeSelector
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2RegexpFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2RegexpFlags
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2ReplicaBounds
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2RestoreRenameToken
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2ScoreType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2SearchType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2SnapshotState
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2SortMode
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2Source
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2ThreadPoolType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_2VersionControl
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3Aggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3AllocationPolicy
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3BulkOperation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3DateMathUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3ExecutionHint
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3FieldType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3InitialShardCount
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3MultiMatchQueryType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3NodeSelector
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3RegexpFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3ScoreType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3SearchType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3SnapshotState
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3SortMode
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_3VersionControl
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4Aggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4DateMathUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4ExecutionHint
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4FieldType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4InitialShardCount
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4MultiMatchQueryType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4RegexpFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4SearchType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4SnapshotState
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_4VersionControl
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5Aggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5DateMathUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5FieldType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5RegexpFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5SearchType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5SnapshotState
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_5UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6Aggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6DateMathUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6FieldType
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6SnapshotState
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_6UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_7DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_7Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_7Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_7Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_7RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_7SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_7UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_8DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_8Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_8Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_8Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_8RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_8SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_8UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_9Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_9Query
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_9RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_9SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Constructor Database.Bloodhound.Types.C1_9UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Aggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1AliasRouting
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1AllocationPolicy
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1AllowLeadingWildcard
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1AnalyzeWildcard
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Analyzer
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1BoolMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1BoolQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1BooleanOperator
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Boost
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1BoostTerms
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1BoostingQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1BoundTransportAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1BuildHash
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1BulkOperation
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Bytes
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CacheKey
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CacheName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CardinalityAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ClusterName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CollectionMode
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CommonHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CommonMinimumMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CompoundFormat
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1CutoffFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DateMathAnchor
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DateMathExpr
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DateMathModifier
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DateMathUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DateRangeAggRange
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DateRangeAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DateRangeResult
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DefaultSort
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DisMaxQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DisableCoord
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Distance
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DistanceRange
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DistanceType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DistanceUnit
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DocId
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DocVersion
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1DocumentParent
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1EnablePositionIncrements
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1EsAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1EsError
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1EsProtocolException
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1EsResult
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1EsResultFound
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Exclude
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ExecutionHint
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Existence
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ExternalDocVersion
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FSType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FastVectorHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FieldDefinition
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FieldHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FieldName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FieldOrFields
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FieldType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Filter
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FilterAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FilteredQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1From
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FullNodeId
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Fuzziness
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1FuzzyQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GeneratePhraseQueries
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GenericSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GeoBoundingBox
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GeoBoundingBoxConstraint
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GeoFilterType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GeoPoint
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GreaterThan
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GreaterThanD
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GreaterThanEq
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1GreaterThanEqD
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1HasChildQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1HasParentQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1HighlightEncoder
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1HighlightSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1HighlightTag
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Highlights
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Hit
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IgnoreTermFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Include
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexAlias
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexAliasAction
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexAliasCreate
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexAliasName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexAliasRouting
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexAliasSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexAliasesSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexDocumentSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexOptimizationSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndexSettingsSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1IndicesQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1InitialShardCount
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Interval
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1JVMBufferPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1JVMGCCollector
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1JVMGCStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1JVMMemoryPool
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1JVMPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1LatLon
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Lenient
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1LessThan
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1LessThanD
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1LessThanEq
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1LessThanEqD
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1LoadAvgs
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Locale
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1LowercaseExpanded
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MacAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Mapping
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MappingField
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MappingName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MatchQueryType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MaxDocFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MaxExpansions
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MaxQueryTerms
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MaxWordLength
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MinDocFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MinWordLength
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MinimumMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MinimumMatchHighLow
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MinimumTermFrequency
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Missing
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MissingAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1MultiMatchQueryType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NestedQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NetworkInterfaceName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeAttrFilter
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeAttrName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeBreakerStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeBreakersStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeFSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeHTTPInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeHTTPStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeNetworkInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeNetworkInterface
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeProcessInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeSelector
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeTransportInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodesInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NodesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NonPostings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1NullValue
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1OpenCloseIndex
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1OptimizeBbox
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1PID
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Pattern
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1PatternOrPatterns
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1PercentMatch
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1PhraseSlop
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1PlainHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1PluginName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1PostingsHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1PrefixLength
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1PrefixQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Query
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1QueryPath
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1QueryString
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RRGroupRefNum
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RangeExecution
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RangeQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RangeValue
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Regexp
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RegexpFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RegexpFlags
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RegexpQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ReplicaBounds
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ReplicaCount
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RestoreIndexSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RestoreRenamePattern
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RestoreRenameToken
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1RoutingValue
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ScoreType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Script
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ScrollId
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Search
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SearchAliasRouting
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SearchHits
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SearchResult
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SearchType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ShardCount
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ShardId
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ShardResult
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SimpleQueryFlag
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Size
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotNodeVerification
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotPattern
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotRepoConversionError
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotRepoName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotRepoPattern
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotRepoSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotRepoType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotRepoUpdateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotShardFailure
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotState
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SnapshotVerification
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SortMode
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SortOrder
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1SortSpec
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Source
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Status
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1StopWord
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1TemplateName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1TemplatePattern
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Term
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1TermInclusion
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1TermOrder
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ThreadPoolSize
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ThreadPoolType
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Tiebreaker
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1TypeName
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1UpdatableIndexSetting
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ValueCountAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1Version
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1VersionControl
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1VersionNumber
+ Database.Bloodhound.Types: instance GHC.Generics.Datatype Database.Bloodhound.Types.D1ZeroTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.BoundTransportAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.BuildHash
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.CardinalityAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.ClusterName
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.EsAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.FullNodeId
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.GenericSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.JVMBufferPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.JVMGCCollector
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.JVMGCStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.JVMMemoryPool
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.JVMPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.LoadAvgs
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.MacAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NetworkInterfaceName
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeBreakerStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeBreakersStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeFSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeHTTPInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeHTTPStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeName
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeNetworkInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeNetworkInterface
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeProcessInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeSelector
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeTransportInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodesInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.NodesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.PID
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.PluginName
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.RRGroupRefNum
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.RestoreIndexSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.RestoreRenamePattern
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.RestoreRenameToken
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.ShardId
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotName
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotNodeVerification
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotPattern
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotRepoConversionError
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotRepoName
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotRepoPattern
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotRepoSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotRepoType
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotRepoUpdateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotSelection
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotShardFailure
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotState
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.SnapshotVerification
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.ThreadPoolSize
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.ThreadPoolType
+ Database.Bloodhound.Types: instance GHC.Generics.Generic Database.Bloodhound.Types.VersionNumber
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0BoolQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0BoostingQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0BoundTransportAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0BuildHash
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0CardinalityAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0ClusterName
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0CommonHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0DateRangeAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0DateRangeResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0DefaultSort
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0DisMaxQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0Distance
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0DistanceRange
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0DocVersion
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0EsAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0EsError
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0EsProtocolException
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0EsResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0EsResultFound
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0FastVectorHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0FieldDefinition
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0FilterAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0FilteredQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0FullNodeId
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0FuzzyQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0GenericSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0GeoBoundingBox
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0GeoBoundingBoxConstraint
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0GeoPoint
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0HasChildQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0HasParentQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0Highlights
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0Hit
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndexAlias
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndexAliasCreate
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndexAliasName
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndexAliasSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndexAliasesSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndexDocumentSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndexOptimizationSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndexSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndexSettingsSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0IndicesQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0JVMBufferPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0JVMGCCollector
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0JVMGCStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0JVMMemoryPool
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0JVMPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0LatLon
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0LoadAvgs
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0MacAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0Mapping
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0MappingField
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0MinimumMatchHighLow
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0MissingAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NestedQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NetworkInterfaceName
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeAttrFilter
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeBreakerStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeBreakersStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeFSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeHTTPInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeHTTPStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeName
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeNetworkInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeNetworkInterface
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeProcessInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeTransportInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodesInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NodesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0NonPostings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0PID
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0PlainHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0PluginName
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0PrefixQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0RRGroupRefNum
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0RangeQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0RegexpQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0RestoreIndexSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0RestoreRenamePattern
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0RoutingValue
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0Script
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SearchHits
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SearchResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0ShardId
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0ShardResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotName
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotNodeVerification
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotRepoName
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotRepoType
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotRepoUpdateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotShardFailure
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0SnapshotVerification
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0Status
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0Term
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0TermOrder
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0Version
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_0VersionNumber
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_10Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_11QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_12QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_13NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_13NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_13NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_13NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_13NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_13NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_13NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_13QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_14NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_14NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_14NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_14NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_14NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_14NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_14NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_14QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_15NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_15NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_15NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_15NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_15NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_15NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_15QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_16NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_16NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_16NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_16NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_16NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_16QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_17NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_18NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_19NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1BoolQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1BoostingQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1BoundTransportAddress
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1CardinalityAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1CommonHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1DateRangeAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1DateRangeResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1DefaultSort
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1DisMaxQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1Distance
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1DistanceRange
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1EsError
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1EsResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1EsResultFound
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1FastVectorHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1FilterAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1FilteredQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1FuzzyQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1GenericSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1GeoBoundingBox
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1GeoBoundingBoxConstraint
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1GeoPoint
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1HasChildQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1HasParentQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1Highlights
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1Hit
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1IndexAlias
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1IndexAliasCreate
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1IndexAliasSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1IndexDocumentSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1IndexOptimizationSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1IndexSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1IndexSettingsSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1IndicesQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1JVMBufferPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1JVMGCStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1JVMPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1LatLon
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1LoadAvgs
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1Mapping
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1MappingField
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1MinimumMatchHighLow
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NestedQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeAttrFilter
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeBreakerStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeBreakersStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeFSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeHTTPInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeHTTPStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeNetworkInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeNetworkInterface
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeProcessInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeTransportInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodesInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NodesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1NonPostings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1PlainHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1PrefixQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1RangeQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1RegexpQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1SearchHits
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1SearchResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1ShardResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1SnapshotNodeVerification
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1SnapshotShardFailure
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1Status
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1Term
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1TermOrder
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_1Version
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_20NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_21NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_22NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_23NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_24NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_25NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_26NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_27NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_28NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_29NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2BoolQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2BoostingQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2CommonHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2DateRangeAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2DateRangeResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2DefaultSort
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2DisMaxQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2EsResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2FastVectorHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2FuzzyQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2GenericSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2GeoBoundingBoxConstraint
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2HasChildQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2HasParentQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2Hit
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2IndexOptimizationSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2IndexSettingsSummary
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2IndicesQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2JVMBufferPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2JVMPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2LoadAvgs
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NestedQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeBreakerStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeBreakersStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeFSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeNetworkInterface
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeProcessInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2PrefixQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2RangeQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2RegexpQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2SearchHits
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2SearchResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2ShardResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2SnapshotShardFailure
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2Status
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_2Version
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_30NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_31NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_32NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_33NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_34NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_35NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_36NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_37NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_38NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_39NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3BoolQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3CommonHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3DateRangeResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3DefaultSort
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3EsResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3FastVectorHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3FuzzyQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3GeoBoundingBoxConstraint
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3Hit
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3JVMPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeBreakerStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeProcessInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3RegexpQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3SearchResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3SnapshotShardFailure
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3Status
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_3Version
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_40NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_41NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_42NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_43NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_44NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_45NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_46NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_47NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_48NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_49NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4BoolQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4CommonHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4DateRangeResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4DefaultSort
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4FastVectorHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4FuzzyQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4Hit
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4SearchResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4Status
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_4Version
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_50NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_51NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_52NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_53NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_54NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_55NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_56NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_57NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_58NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_59NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5BoolQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5CommonHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5DateRangeResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5DefaultSort
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5FastVectorHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5FuzzyQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5Hit
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5SearchResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_5TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_60NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_61NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_62NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_63NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_64NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_65NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_66NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_67NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_68NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_69NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6CPUInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6CommonHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6DateRangeResult
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6FastVectorHighlight
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6SimpleQueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_6TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7DateHistogramAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7FuzzyLikeFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7FuzzyLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_7TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8CommonTermsQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_8TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9MatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9MoreLikeThisFieldQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9MoreLikeThisQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9MultiMatchQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9QueryStringQuery
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9Search
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Generics.Selector Database.Bloodhound.Types.S1_0_9TermsAggregation
+ Database.Bloodhound.Types: instance GHC.Read.Read Database.Bloodhound.Types.BuildHash
+ Database.Bloodhound.Types: instance GHC.Read.Read Database.Bloodhound.Types.CardinalityAggregation
+ Database.Bloodhound.Types: instance GHC.Read.Read Database.Bloodhound.Types.VersionNumber
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.BoundTransportAddress
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.BuildHash
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.CPUInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.CardinalityAggregation
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.ClusterName
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.EsAddress
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.FsSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.FullNodeId
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.GenericSnapshotRepo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.JVMBufferPoolStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.JVMGCCollector
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.JVMGCStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.JVMMemoryInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.JVMMemoryPool
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.JVMPoolStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.LoadAvgs
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.MacAddress
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NetworkInterfaceName
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeBreakerStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeBreakersStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeDataPathStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeFSStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeFSTotalStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeHTTPInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeHTTPStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeIndicesStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeJVMInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeJVMStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeName
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeNetworkInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeNetworkInterface
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeNetworkStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeOSInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeOSStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodePluginInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeProcessInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeProcessStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeSelection
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeSelector
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeThreadPoolInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeThreadPoolStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeThreadPoolsInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeThreadPoolsStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeTransportInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodeTransportStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodesInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.NodesStats
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.PID
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.PluginName
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.RRGroupRefNum
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.RestoreIndexSettings
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.RestoreRenamePattern
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.RestoreRenameToken
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.ShardId
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotCreateSettings
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotInfo
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotName
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotNodeVerification
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotPattern
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotRepoConversionError
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotRepoName
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotRepoPattern
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotRepoSelection
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotRepoType
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotRepoUpdateSettings
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotRestoreSettings
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotSelection
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotShardFailure
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotState
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.SnapshotVerification
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.ThreadPoolSize
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.ThreadPoolType
+ Database.Bloodhound.Types: instance GHC.Show.Show Database.Bloodhound.Types.VersionNumber
+ Database.Bloodhound.Types: instance GHC.Show.Show a => GHC.Show.Show (Database.Bloodhound.Types.MaybeNA a)
+ Database.Bloodhound.Types: kilobytes :: Int -> Bytes
+ Database.Bloodhound.Types: megabytes :: Int -> Bytes
+ Database.Bloodhound.Types: mkCardinalityAggregation :: FieldName -> CardinalityAggregation
+ Database.Bloodhound.Types: mkRRGroupRefNum :: Int -> Maybe RRGroupRefNum
+ Database.Bloodhound.Types: newtype BuildHash
+ Database.Bloodhound.Types: newtype ClusterName
+ Database.Bloodhound.Types: newtype EsAddress
+ Database.Bloodhound.Types: newtype FullNodeId
+ Database.Bloodhound.Types: newtype GenericSnapshotRepoSettings
+ Database.Bloodhound.Types: newtype JVMGCCollector
+ Database.Bloodhound.Types: newtype JVMMemoryPool
+ Database.Bloodhound.Types: newtype MacAddress
+ Database.Bloodhound.Types: newtype MaybeNA a
+ Database.Bloodhound.Types: newtype NetworkInterfaceName
+ Database.Bloodhound.Types: newtype NodeName
+ Database.Bloodhound.Types: newtype PID
+ Database.Bloodhound.Types: newtype PluginName
+ Database.Bloodhound.Types: newtype RestoreRenamePattern
+ Database.Bloodhound.Types: newtype ShardId
+ Database.Bloodhound.Types: newtype SnapshotName
+ Database.Bloodhound.Types: newtype SnapshotRepoName
+ Database.Bloodhound.Types: newtype SnapshotRepoType
+ Database.Bloodhound.Types: newtype SnapshotVerification
+ Database.Bloodhound.Types: newtype VersionNumber
+ Database.Bloodhound.Types: rrGroupRefNum :: RRGroupRefNum -> Int
+ Database.Bloodhound.Types: toEncodingList :: ToJSON a => [a] -> Encoding
+ Database.Bloodhound.Types: toGSnapshotRepo :: SnapshotRepo r => r -> GenericSnapshotRepo
+ Database.Bloodhound.Types: toJSONList :: ToJSON a => [a] -> Value
+ Database.Bloodhound.Types.Internal: instance Data.Aeson.Types.FromJSON.FromJSON Database.Bloodhound.Types.Internal.Server
+ Database.Bloodhound.Types.Internal: instance GHC.Generics.Constructor Database.Bloodhound.Types.Internal.C1_0Server
+ Database.Bloodhound.Types.Internal: instance GHC.Generics.Datatype Database.Bloodhound.Types.Internal.D1Server
- Database.Bloodhound.Types: Version :: Text -> Text -> UTCTime -> Bool -> Text -> Version
+ Database.Bloodhound.Types: Version :: VersionNumber -> BuildHash -> UTCTime -> Bool -> VersionNumber -> Version
- Database.Bloodhound.Types: [build_hash] :: Version -> Text
+ Database.Bloodhound.Types: [build_hash] :: Version -> BuildHash
- Database.Bloodhound.Types: [lucene_version] :: Version -> Text
+ Database.Bloodhound.Types: [lucene_version] :: Version -> VersionNumber
- Database.Bloodhound.Types: [number] :: Version -> Text
+ Database.Bloodhound.Types: [number] :: Version -> VersionNumber

Files

README.md view
@@ -70,6 +70,7 @@ -- the multi-line examples into your ghci REPL.  :set -XDeriveGeneric+:set -XOverloadedStrings :{ import Control.Applicative import Database.Bloodhound@@ -93,8 +94,8 @@ let defaultIndexSettings = IndexSettings (ShardCount 3) (ReplicaCount 2)  -- createIndex returns MonadBH m => m Reply. You can use withBH for-   one-off commands or you can use runBH to group together commands-   and to pass in your own HTTP manager for pipelining.+-- one-off commands or you can use runBH to group together commands+-- and to pass in your own HTTP manager for pipelining.  -- response :: Reply, Reply is a synonym for Network.HTTP.Conduit.Response response <- withBH' $ createIndex defaultIndexSettings testIndex@@ -180,10 +181,9 @@ :{ instance ToJSON TweetMapping where   toJSON TweetMapping =-    object ["tweet" .=-      object ["properties" .=-        object ["location" .=-          object ["type" .= ("geo_point" :: Text)]]]]+    object ["properties" .=+      object ["location" .=+        object ["type" .= ("geo_point" :: Text)]]] :}  resp <- withBH' $ putMapping testIndex testMapping TweetMapping
bloodhound.cabal view
@@ -1,5 +1,5 @@ name:                bloodhound-version:             0.11.1.0+version:             0.12.0.0 synopsis:            ElasticSearch client library for Haskell description:         ElasticSearch made awesome for Haskell hackers homepage:            https://github.com/bitemyapp/bloodhound@@ -9,7 +9,7 @@ maintainer:          cma@bitemyapp.com copyright:           2015, Chris Allen category:            Database, Search-build-type:          Custom+build-type:          Simple cabal-version:       >=1.10  extra-source-files:@@ -32,8 +32,8 @@   build-depends:       base             >= 4.3     && <5,                        bytestring       >= 0.10.0  && <0.11,                        containers       >= 0.5.0.0 && <0.6,-                       aeson            >= 0.11.1  && <0.12,-                       http-client      >= 0.5     && <0.6,+                       aeson            >= 0.11.1  && <1.1,+                       http-client      >= 0.4.30  && <0.6,                        network-uri      >= 2.6     && <2.7,                        semigroups       >= 0.15    && <0.19,                        time             >= 1.4     && <1.7,@@ -62,7 +62,7 @@                        http-client,                        http-types,                        containers,-                       hspec                >= 1.8 && <2.3,+                       hspec                >= 1.8 && <2.4,                        text,                        time,                        aeson,@@ -72,8 +72,12 @@                        unordered-containers >= 0.2.5.0 && <0.3,                        mtl,                        quickcheck-properties,-                       derive,-                       errors+                       generics-sop         >=0.2 && <0.3,+                       errors,+                       exceptions,+                       temporary,+                       unix,+                       network-uri   default-language:    Haskell2010  test-suite doctests@@ -88,7 +92,6 @@                       bloodhound,                       directory,                       doctest >= 0.10.1,-                      doctest-prop,                       filepath   else     buildable: False
changelog.md view
@@ -1,3 +1,43 @@+0.12.0.0+===================+This release contains several new APIs, documentation fixes, and some minor type updates, and steps towards ES 2.0 support. Thanks to all of our contributors!++* @bermanjosh+  - #139 Make `nodeOSLoad` record a `Maybe` for Windows compatibility+  - #138 Change the `nodePluginVersion` record to deal with plugins which report `NA` as their version.+* @phadej+  - #155 Shed `derive` dependency in test.+  - #154 Switch to `Simple` build type.+  - #153 Loosen deps on aeson, hspec.+* @andrewthad+  - #151 Add `waitForYellowIndex`+* @michaelxavier+  - #150 Fix some failing QuickCheck tests.+  - #147 Drop dependency on deprecated doctest-prop.+  - #137 Add node stats API.+  - #128 Add nodes API.+  - #127 Add haddock sections to break up API.+  - #126 Add snapshot/restore API.+  - #125 Set lower bound for http-client+  - #123 Allow replica count of 0 in smart constructor.+* @23Skidoo+  - #143 Fix an example.+  - #142 Docs cleanup.+* @alistair+  - #135 Changes date formatting to have leading zeroes to bring us closer to ES 2.0 support.+  - #133 Fix parent child tests for ES 2.0.+  - #132 Parse status API from ES 2.0.+  - #131 Add cardinality aggregations.+* @dinnu93+  - #130 Add OverloadedStrings to first example.+* @MaxGabriel+  - #117 Fix haddocks italicizing forward slashes.++0.11.1.0+===================+* @bitemyapp+  - Add http-client-0.5.0 support+ 0.11.0.0 =================== @@ -79,7 +119,7 @@   - #61: Filter aggregation support   - #60: Add value_count aggregation support   - #58: Eliminate partiality in EsResult-  + * @centromere   - #59: Fixed bug with IndexSettings serialization   - #56: Added fields support to Search@@ -88,7 +128,7 @@   - #52: Added ability to manipulate templates   - #51: Fixed mapping API   - #50: Fixed problem with put sending POST-  + * @bermanjosh   - #63: Url query encoding bug   - #53: Scan type
src/Database/Bloodhound/Client.hs view
@@ -23,6 +23,7 @@           -- $setup          withBH+       -- ** Indices        , createIndex        , deleteIndex        , updateIndexSettings@@ -32,18 +33,24 @@        , openIndex        , closeIndex        , listIndices+       , waitForYellowIndex+       -- *** Index Aliases        , updateIndexAliases        , getIndexAliases+       -- *** Index Templates        , putTemplate        , templateExists        , deleteTemplate+       -- ** Mapping        , putMapping        , deleteMapping+       -- ** Documents        , indexDocument        , updateDocument        , getDocument        , documentExists        , deleteDocument+       -- ** Searching        , searchAll        , searchByIndex        , searchByType@@ -59,6 +66,22 @@        , mkShardCount        , mkReplicaCount        , getStatus+       -- ** Snapshot/Restore+       -- *** Snapshot Repos+       , getSnapshotRepos+       , updateSnapshotRepo+       , verifySnapshotRepo+       , deleteSnapshotRepo+       -- *** Snapshots+       , createSnapshot+       , getSnapshots+       , deleteSnapshot+       -- *** Restoring Snapshots+       , restoreSnapshot+       -- ** Nodes+       , getNodesInfo+       , getNodesStats+       -- ** Request Utilities        , encodeBulkOperations        , encodeBulkOperation        -- * Authentication@@ -72,7 +95,7 @@        where  import qualified Blaze.ByteString.Builder     as BB-import           Control.Applicative+import           Control.Applicative          as A import           Control.Monad import           Control.Monad.Catch import           Control.Monad.IO.Class@@ -104,7 +127,6 @@ -- >>> :set -XOverloadedStrings -- >>> :set -XDeriveGeneric -- >>> import Database.Bloodhound--- >>> import Test.DocTest.Prop (assert) -- >>> let testServer = (Server "http://localhost:9200") -- >>> let runBH' = withBH defaultManagerSettings testServer -- >>> let testIndex = IndexName "twitter"@@ -118,10 +140,9 @@ -- >>> :{ --instance ToJSON TweetMapping where --          toJSON TweetMapping =---            object ["tweet" .=---              object ["properties" .=---                object ["location" .=---                  object ["type" .= ("geo_point" :: Text)]]]]+--            object ["properties" .=+--              object ["location" .=+--                object ["type" .= ("geo_point" :: Text)]]] --data Location = Location { lat :: Double --                         , lon :: Double } deriving (Eq, Generic, Show) --data Tweet = Tweet { user     :: Text@@ -163,13 +184,13 @@   | otherwise = Just (ShardCount n)  -- | 'mkReplicaCount' is a straight-forward smart constructor for 'ReplicaCount'---   which rejects 'Int' values below 1 and above 1000.+--   which rejects 'Int' values below 0 and above 1000. -- -- >>> mkReplicaCount 10 -- Just (ReplicaCount 10) mkReplicaCount :: Int -> Maybe ReplicaCount mkReplicaCount n-  | n < 1 = Nothing+  | n < 0 = Nothing   | n > 1000 = Nothing -- ...   | otherwise = Just (ReplicaCount n) @@ -183,7 +204,7 @@          -> m Reply dispatch dMethod url body = do   initReq <- liftIO $ parseUrl' url-  reqHook <- bhRequestHook <$> getBHEnv+  reqHook <- bhRequestHook A.<$> getBHEnv   let reqBody = RequestBodyLBS $ fromMaybe emptyBody body   req <- liftIO $ reqHook $ setRequestIgnoreStatus $ initReq { method = dMethod                                                              , requestBody = reqBody }@@ -260,6 +281,218 @@   return $ decode (responseBody response)   where url = joinPath [] +-- | 'getSnapshotRepos' gets the definitions of a subset of the+-- defined snapshot repos.+getSnapshotRepos+    :: ( MonadBH m+       , MonadThrow m+       )+    => SnapshotRepoSelection+    -> m (Either EsError [GenericSnapshotRepo])+getSnapshotRepos sel = fmap (fmap unGSRs) . parseEsResponse =<< get =<< url+  where+    url = joinPath ["_snapshot", selectorSeg]+    selectorSeg = case sel of+                    AllSnapshotRepos -> "_all"+                    SnapshotRepoList (p :| ps) -> T.intercalate "," (renderPat <$> (p:ps))+    renderPat (RepoPattern t)                  = t+    renderPat (ExactRepo (SnapshotRepoName t)) = t+++-- | Wrapper to extract the list of 'GenericSnapshotRepo' in the+-- format they're returned in+newtype GSRs = GSRs { unGSRs :: [GenericSnapshotRepo] }+++instance FromJSON GSRs where+  parseJSON = withObject "Collection of GenericSnapshotRepo" parse+    where+      parse = fmap GSRs . mapM (uncurry go) . HM.toList+      go rawName = withObject "GenericSnapshotRepo" $ \o -> do+        GenericSnapshotRepo (SnapshotRepoName rawName) <$> o .: "type"+                                                       <*> o .: "settings"+++-- | Create or update a snapshot repo+updateSnapshotRepo+  :: ( MonadBH m+     , SnapshotRepo repo+     )+  => SnapshotRepoUpdateSettings+  -- ^ Use 'defaultSnapshotRepoUpdateSettings' if unsure+  -> repo+  -> m Reply+updateSnapshotRepo SnapshotRepoUpdateSettings {..} repo =+  bindM2 put url (return (Just body))+  where+    url = addQuery params <$> joinPath ["_snapshot", snapshotRepoName gSnapshotRepoName]+    params+      | repoUpdateVerify = []+      | otherwise        = [("verify", Just "false")]+    body = encode $ object [ "type" .= gSnapshotRepoType+                           , "settings" .= gSnapshotRepoSettings+                           ]+    GenericSnapshotRepo {..} = toGSnapshotRepo repo++++-- | Verify if a snapshot repo is working. __NOTE:__ this API did not+-- make it into ElasticSearch until 1.4. If you use an older version,+-- you will get an error here.+verifySnapshotRepo+    :: ( MonadBH m+       , MonadThrow m+       )+    => SnapshotRepoName+    -> m (Either EsError SnapshotVerification)+verifySnapshotRepo (SnapshotRepoName n) =+  parseEsResponse =<< bindM2 post url (return Nothing)+  where+    url = joinPath ["_snapshot", n, "_verify"]+++deleteSnapshotRepo :: MonadBH m => SnapshotRepoName -> m Reply+deleteSnapshotRepo (SnapshotRepoName n) = delete =<< url+  where+    url = joinPath ["_snapshot", n]+++-- | Create and start a snapshot+createSnapshot+    :: (MonadBH m)+    => SnapshotRepoName+    -> SnapshotName+    -> SnapshotCreateSettings+    -> m Reply+createSnapshot (SnapshotRepoName repoName)+               (SnapshotName snapName)+               SnapshotCreateSettings {..} =+  bindM2 put url (return (Just body))+  where+    url = addQuery params <$> joinPath ["_snapshot", repoName, snapName]+    params = [("wait_for_completion", Just (boolQP snapWaitForCompletion))]+    body = encode $ object prs+    prs = catMaybes [ ("indices" .=) . indexSelectionName <$> snapIndices+                    , Just ("ignore_unavailable" .= snapIgnoreUnavailable)+                    , Just ("ignore_global_state" .= snapIncludeGlobalState)+                    , Just ("partial" .= snapPartial)+                    ]+++indexSelectionName :: IndexSelection -> Text+indexSelectionName AllIndexes            = "_all"+indexSelectionName (IndexList (i :| is)) = T.intercalate "," (renderIndex <$> (i:is))+  where+    renderIndex (IndexName n) = n+++-- | Get info about known snapshots given a pattern and repo name.+getSnapshots+    :: ( MonadBH m+       , MonadThrow m+       )+    => SnapshotRepoName+    -> SnapshotSelection+    -> m (Either EsError [SnapshotInfo])+getSnapshots (SnapshotRepoName repoName) sel =+  fmap (fmap unSIs) . parseEsResponse =<< get =<< url+  where+    url = joinPath ["_snapshot", repoName, snapPath]+    snapPath = case sel of+      AllSnapshots -> "_all"+      SnapshotList (s :| ss) -> T.intercalate "," (renderPath <$> (s:ss))+    renderPath (SnapPattern t)              = t+    renderPath (ExactSnap (SnapshotName t)) = t+++newtype SIs = SIs { unSIs :: [SnapshotInfo] }+++instance FromJSON SIs where+  parseJSON = withObject "Collection of SnapshotInfo" parse+    where+      parse o = SIs <$> o .: "snapshots"+++-- | Delete a snapshot. Cancels if it is running.+deleteSnapshot :: MonadBH m => SnapshotRepoName -> SnapshotName -> m Reply+deleteSnapshot (SnapshotRepoName repoName) (SnapshotName snapName) =+  delete =<< url+  where+    url = joinPath ["_snapshot", repoName, snapName]+++-- | Restore a snapshot to the cluster See+-- <https://www.elastic.co/guide/en/elasticsearch/reference/1.7/modules-snapshots.html#_restore>+-- for more details.+restoreSnapshot+    :: MonadBH m+    => SnapshotRepoName+    -> SnapshotName+    -> SnapshotRestoreSettings+    -- ^ Start with 'defaultSnapshotRestoreSettings' and customize+    -- from there for reasonable defaults.+    -> m Reply+restoreSnapshot (SnapshotRepoName repoName)+                (SnapshotName snapName)+                SnapshotRestoreSettings {..} = bindM2 post url (return (Just body))+  where+    url = addQuery params <$> joinPath ["_snapshot", repoName, snapName, "_restore"]+    params = [("wait_for_completion", Just (boolQP snapRestoreWaitForCompletion))]+    body = encode (object prs)+++    prs = catMaybes [ ("indices" .=) . indexSelectionName <$> snapRestoreIndices+                 , Just ("ignore_unavailable" .= snapRestoreIgnoreUnavailable)+                 , Just ("include_global_state" .= snapRestoreIncludeGlobalState)+                 , ("rename_pattern" .=) <$> snapRestoreRenamePattern+                 , ("rename_replacement" .=) . renderTokens <$> snapRestoreRenameReplacement+                 , Just ("include_aliases" .= snapRestoreIncludeAliases)+                 , ("index_settings" .= ) <$> snapRestoreIndexSettingsOverrides+                 , ("ignore_index_settings" .= ) <$> snapRestoreIgnoreIndexSettings+                 ]+    renderTokens (t :| ts) = mconcat (renderToken <$> (t:ts))+    renderToken (RRTLit t)      = t+    renderToken RRSubWholeMatch = "$0"+    renderToken (RRSubGroup g)  = T.pack (show (rrGroupRefNum g))+++getNodesInfo+    :: ( MonadBH m+       , MonadThrow m+       )+    => NodeSelection+    -> m (Either EsError NodesInfo)+getNodesInfo sel = parseEsResponse =<< get =<< url+  where+    url = joinPath ["_nodes", selectionSeg]+    selectionSeg = case sel of+      LocalNode -> "_local"+      NodeList (l :| ls) -> T.intercalate "," (selToSeg <$> (l:ls))+      AllNodes -> "_all"+    selToSeg (NodeByName (NodeName n))            = n+    selToSeg (NodeByFullNodeId (FullNodeId i))    = i+    selToSeg (NodeByHost (Server s))              = s+    selToSeg (NodeByAttribute (NodeAttrName a) v) = a <> ":" <> v++getNodesStats+    :: ( MonadBH m+       , MonadThrow m+       )+    => NodeSelection+    -> m (Either EsError NodesStats)+getNodesStats sel = parseEsResponse =<< get =<< url+  where+    url = joinPath ["_nodes", selectionSeg, "stats"]+    selectionSeg = case sel of+      LocalNode -> "_local"+      NodeList (l :| ls) -> T.intercalate "," (selToSeg <$> (l:ls))+      AllNodes -> "_all"+    selToSeg (NodeByName (NodeName n))            = n+    selToSeg (NodeByFullNodeId (FullNodeId i))    = i+    selToSeg (NodeByHost (Server s))              = s+    selToSeg (NodeByAttribute (NodeAttrName a) v) = a <> ":" <> v+ -- | 'createIndex' will create an index given a 'Server', 'IndexSettings', and an 'IndexName'. -- -- >>> response <- runBH' $ createIndex defaultIndexSettings (IndexName "didimakeanindex")@@ -339,16 +572,9 @@                            , Just ("flush", Just (boolQP flushAfterOptimize))                            ]         indexName = indexSelectionName ixs-        boolQP True = "true"-        boolQP False = "false"         body = Nothing  ---------------------------------------------------------------------------------indexSelectionName :: IndexSelection -> Text-indexSelectionName (IndexList names) = T.intercalate "," [n | IndexName n <- toList names]-indexSelectionName AllIndexes        = "_all"- deepMerge :: [Object] -> Object deepMerge = LS.foldl' go mempty   where go acc = LS.foldl' go' acc . HM.toList@@ -408,6 +634,14 @@   bindM2 post url (return Nothing)   where url = joinPath [indexName, "_refresh"] +-- | Block until the index becomes available for indexing+--   documents. This is useful for integration tests in which+--   indices are rapidly created and deleted.+waitForYellowIndex :: MonadBH m => IndexName -> m Reply+waitForYellowIndex (IndexName indexName) = get =<< url+  where url = addQuery q <$> joinPath ["_cluster","health",indexName]+        q = [("wait_for_status",Just "yellow"),("timeout",Just "10s")]+ stringifyOCIndex :: OpenCloseIndex -> Text stringifyOCIndex oci = case oci of   OpenIndex  -> "_open"@@ -856,3 +1090,8 @@ basicAuthHook (EsUsername u) (EsPassword p) = return . applyBasicAuth u' p'   where u' = T.encodeUtf8 u         p' = T.encodeUtf8 p+++boolQP :: Bool -> Text+boolQP True  = "true"+boolQP False = "false"
src/Database/Bloodhound/Types.hs view
@@ -5,3623 +5,5218 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses      #-} -- {-# LANGUAGE NoMonomorphismRestriction  #-}-{-# LANGUAGE OverloadedStrings          #-}-{-# LANGUAGE RecordWildCards            #-}-{-# LANGUAGE UndecidableInstances       #-}-{-# LANGUAGE NamedFieldPuns             #-}------------------------------------------------------------------------------------ |--- Module : Database.Bloodhound.Types--- Copyright : (C) 2014, 2015, 2016 Chris Allen--- License : BSD-style (see the file LICENSE)--- Maintainer : Chris Allen <cma@bitemyapp.com--- Stability : provisional--- Portability : DeriveGeneric, RecordWildCards------ 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.------------------------------------------------------------------------------------module Database.Bloodhound.Types-       ( defaultCache-       , defaultIndexSettings-       , defaultIndexDocumentSettings-       , mkSort-       , showText-       , unpackId-       , mkMatchQuery-       , mkMultiMatchQuery-       , mkBoolQuery-       , mkRangeQuery-       , mkQueryStringQuery-       , mkAggregations-       , mkTermsAggregation-       , mkTermsScriptAggregation-       , mkDateHistogram-       , mkDocVersion-       , docVersionNumber-       , toMissing-       , toTerms-       , toDateHistogram-       , omitNulls-       , BH(..)-       , runBH-       , BHEnv-       , bhServer-       , bhManager-       , bhRequestHook-       , mkBHEnv-       , MonadBH(..)-       , Version(..)-       , Status(..)-       , Existence(..)-       , NullValue(..)-       , IndexSettings(..)-       , UpdatableIndexSetting(..)-       , IndexSettingsSummary(..)-       , AllocationPolicy(..)-       , ReplicaBounds(..)-       , Bytes(..)-       , FSType(..)-       , InitialShardCount(..)-       , NodeAttrFilter(..)-       , NodeAttrName(..)-       , CompoundFormat(..)-       , IndexTemplate(..)-       , Server(..)-       , Reply-       , EsResult(..)-       , EsResultFound(..)-       , EsError(..)-       , EsProtocolException(..)-       , IndexAlias(..)-       , IndexAliasName(..)-       , IndexAliasAction(..)-       , IndexAliasCreate(..)-       , IndexAliasSummary(..)-       , IndexAliasesSummary(..)-       , AliasRouting(..)-       , SearchAliasRouting(..)-       , IndexAliasRouting(..)-       , RoutingValue(..)-       , DocVersion-       , ExternalDocVersion(..)-       , VersionControl(..)-       , DocumentParent(..)-       , IndexDocumentSettings(..)-       , Query(..)-       , Search(..)-       , SearchType(..)-       , SearchResult(..)-       , ScrollId(..)-       , SearchHits(..)-       , TrackSortScores-       , From(..)-       , Size(..)-       , Source(..)-       , PatternOrPatterns(..)-       , Include(..)-       , Exclude(..)-       , Pattern(..)-       , ShardResult(..)-       , Hit(..)-       , Filter(..)-       , Seminearring(..)-       , BoolMatch(..)-       , Term(..)-       , GeoPoint(..)-       , GeoBoundingBoxConstraint(..)-       , GeoBoundingBox(..)-       , GeoFilterType(..)-       , Distance(..)-       , DistanceUnit(..)-       , DistanceType(..)-       , DistanceRange(..)-       , OptimizeBbox(..)-       , LatLon(..)-       , RangeValue(..)-       , RangeExecution(..)-       , LessThan(..)-       , LessThanEq(..)-       , GreaterThan(..)-       , GreaterThanEq(..)-       , LessThanD(..)-       , LessThanEqD(..)-       , GreaterThanD(..)-       , GreaterThanEqD(..)-       , Regexp(..)-       , RegexpFlags(..)-       , RegexpFlag(..)-       , FieldName(..)-       , Script(..)-       , IndexName(..)-       , IndexSelection(..)-       , IndexOptimizationSettings(..)-       , defaultIndexOptimizationSettings-       , TemplateName(..)-       , TemplatePattern(..)-       , MappingName(..)-       , DocId(..)-       , CacheName(..)-       , CacheKey(..)-       , BulkOperation(..)-       , ReplicaCount(..)-       , ShardCount(..)-       , Sort-       , SortMode(..)-       , SortOrder(..)-       , SortSpec(..)-       , DefaultSort(..)-       , Missing(..)-       , OpenCloseIndex(..)-       , Method-       , Boost(..)-       , MatchQuery(..)-       , MultiMatchQuery(..)-       , BoolQuery(..)-       , BoostingQuery(..)-       , CommonTermsQuery(..)-       , DisMaxQuery(..)-       , FilteredQuery(..)-       , FuzzyLikeThisQuery(..)-       , FuzzyLikeFieldQuery(..)-       , FuzzyQuery(..)-       , HasChildQuery(..)-       , HasParentQuery(..)-       , IndicesQuery(..)-       , MoreLikeThisQuery(..)-       , MoreLikeThisFieldQuery(..)-       , NestedQuery(..)-       , PrefixQuery(..)-       , QueryStringQuery(..)-       , SimpleQueryStringQuery(..)-       , RangeQuery(..)-       , RegexpQuery(..)-       , QueryString(..)-       , BooleanOperator(..)-       , ZeroTermsQuery(..)-       , CutoffFrequency(..)-       , Analyzer(..)-       , MaxExpansions(..)-       , Lenient(..)-       , MatchQueryType(..)-       , MultiMatchQueryType(..)-       , Tiebreaker(..)-       , MinimumMatch(..)-       , DisableCoord(..)-       , CommonMinimumMatch(..)-       , MinimumMatchHighLow(..)-       , PrefixLength(..)-       , Fuzziness(..)-       , IgnoreTermFrequency(..)-       , MaxQueryTerms(..)-       , ScoreType(..)-       , Score-       , Cache-       , TypeName(..)-       , BoostTerms(..)-       , MaxWordLength(..)-       , MinWordLength(..)-       , MaxDocFrequency(..)-       , MinDocFrequency(..)-       , PhraseSlop(..)-       , StopWord(..)-       , QueryPath(..)-       , MinimumTermFrequency(..)-       , PercentMatch(..)-       , FieldDefinition(..)-       , MappingField(..)-       , Mapping(..)-       , AllowLeadingWildcard(..)-       , LowercaseExpanded(..)-       , GeneratePhraseQueries(..)-       , Locale(..)-       , AnalyzeWildcard(..)-       , EnablePositionIncrements(..)-       , SimpleQueryFlag(..)-       , FieldOrFields(..)-       , Monoid(..)-       , ToJSON(..)-       , Interval(..)-       , TimeInterval(..)-       , ExecutionHint(..)-       , CollectionMode(..)-       , TermOrder(..)-       , TermInclusion(..)--       , Aggregation(..)-       , Aggregations-       , AggregationResults-       , BucketValue(..)-       , Bucket(..)-       , BucketAggregation(..)-       , TermsAggregation(..)-       , MissingAggregation(..)-       , ValueCountAggregation(..)-       , FilterAggregation(..)-       , DateHistogramAggregation(..)-       , DateRangeAggregation(..)-       , DateRangeAggRange(..)-       , DateMathExpr(..)-       , DateMathAnchor(..)-       , DateMathModifier(..)-       , DateMathUnit(..)--       , Highlights(..)-       , FieldHighlight(..)-       , HighlightSettings(..)-       , PlainHighlight(..)-       , PostingsHighlight(..)-       , FastVectorHighlight(..)-       , CommonHighlight(..)-       , NonPostings(..)-       , HighlightEncoder(..)-       , HighlightTag(..)-       , HitHighlight--       , MissingResult(..)-       , TermsResult(..)-       , DateHistogramResult(..)-       , DateRangeResult(..)--       , EsUsername(..)-       , EsPassword(..)-         ) where--import           Control.Applicative-import           Control.Monad.Catch-import           Control.Monad.Except-import           Control.Monad.Reader-import           Control.Monad.State-import           Control.Monad.Writer-import           Data.Aeson-import           Data.Aeson.Types                   (Pair, Parser, emptyObject,-                                                     parseMaybe)-import qualified Data.ByteString.Lazy.Char8         as L-import           Data.Char-import           Data.Hashable                      (Hashable)-import qualified Data.HashMap.Strict                as HM-import           Data.List                          (foldl', nub)-import           Data.List.NonEmpty                 (NonEmpty (..), toList)-import qualified Data.Map.Strict                    as M-import           Data.Maybe-import           Data.Scientific                    (Scientific)-import           Data.Text                          (Text)-import qualified Data.Text                          as T-import           Data.Time.Calendar-import           Data.Time.Clock                    (NominalDiffTime, UTCTime)-import           Data.Time.Clock.POSIX-import qualified Data.Traversable                   as DT-import           Data.Typeable                      (Typeable)-import qualified Data.Vector                        as V-import           GHC.Enum-import           GHC.Generics                       (Generic)-import           Network.HTTP.Client-import qualified Network.HTTP.Types.Method          as NHTM-import qualified Text.Read                          as TR--import           Database.Bloodhound.Types.Class-import           Database.Bloodhound.Types.Internal---- $setup--- >>> :set -XOverloadedStrings--- >>> import Data.Aeson--- >>> import Database.Bloodhound--- >>> let testServer = (Server "http://localhost:9200")--- >>> let testIndex = IndexName "twitter"--- >>> let testMapping = MappingName "tweet"--- >>> let defaultIndexSettings = IndexSettings (ShardCount 3) (ReplicaCount 2)---- defaultIndexSettings is exported by Database.Bloodhound as well--- no trailing slashes in servers, library handles building the path.---- | Create a 'BHEnv' with all optional fields defaulted. HTTP hook--- will be a noop. You can use the exported fields to customize it further, e.g.:------ >> (mkBHEnv myServer myManager) { bhRequestHook = customHook }-mkBHEnv :: Server -> Manager -> BHEnv-mkBHEnv s m = BHEnv s m return--newtype BH m a = BH {-      unBH :: ReaderT BHEnv m a-    } deriving ( Functor-               , Applicative-               , Monad-               , MonadIO-               , MonadState s-               , MonadWriter w-               , MonadError e-               , Alternative-               , MonadPlus-               , MonadFix-               , MonadThrow-               , MonadCatch-               , MonadMask)--instance MonadTrans BH where-  lift = BH . lift--instance (MonadReader r m) => MonadReader r (BH m) where-    ask = lift ask-    local f (BH (ReaderT m)) = BH $ ReaderT $ \r ->-      local f (m r)--instance (Functor m, Applicative m, MonadIO m) => MonadBH (BH m) where-  getBHEnv = BH getBHEnv--runBH :: BHEnv -> BH m a -> m a-runBH e f = runReaderT (unBH f) e--{-| 'Version' is embedded in 'Status' -}-data Version = Version { number          :: Text-                       , build_hash      :: Text-                       , build_timestamp :: UTCTime-                       , build_snapshot  :: Bool-                       , lucene_version  :: Text } deriving (Eq, Read, Show, Generic, Typeable)--{-| 'Status' is a data type for describing the JSON body returned by-    Elasticsearch when you query its status. This was deprecated in 1.2.0.--   <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-status.html#indices-status>--}--data Status = Status { ok      :: Maybe Bool-                     , status  :: Int-                     , name    :: Text-                     , version :: Version-                     , tagline :: Text } deriving (Eq, Read, Show, Generic)--{-| 'IndexSettings' is used to configure the shards and replicas when you create-   an Elasticsearch Index.--   <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-create-index.html>--}--data IndexSettings =-  IndexSettings { indexShards   :: ShardCount-                , indexReplicas :: ReplicaCount } deriving (Eq, Read, Show, Generic, Typeable)--{-| 'defaultIndexSettings' is an 'IndexSettings' with 3 shards and 2 replicas. -}-defaultIndexSettings :: IndexSettings-defaultIndexSettings =  IndexSettings (ShardCount 3) (ReplicaCount 2)---{-| 'IndexOptimizationSettings' is used to configure index optimization. See-    <https://www.elastic.co/guide/en/elasticsearch/reference/1.7/indices-optimize.html>-    for more info.--}-data IndexOptimizationSettings =-  IndexOptimizationSettings { maxNumSegments     :: Maybe Int-                            -- ^ Number of segments to optimize to. 1 will fully optimize the index. If omitted, the default behavior is to only optimize if the server deems it necessary.-                            , onlyExpungeDeletes :: Bool-                            -- ^ Should the optimize process only expunge segments with deletes in them? If the purpose of the optimization is to free disk space, this should be set to True.-                            , flushAfterOptimize :: Bool-                            -- ^ Should a flush be performed after the optimize.-                            } deriving (Eq, Show, Generic, Typeable)---{-| 'defaultIndexOptimizationSettings' implements the default settings that-    ElasticSearch uses for index optimization. 'maxNumSegments' is Nothing,-    'onlyExpungeDeletes' is False, and flushAfterOptimize is True.--}-defaultIndexOptimizationSettings :: IndexOptimizationSettings-defaultIndexOptimizationSettings = IndexOptimizationSettings Nothing False True--{-| 'UpdatableIndexSetting' are settings which may be updated after an index is created.--   <https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html>--}-data UpdatableIndexSetting = NumberOfReplicas ReplicaCount-                           -- ^ The number of replicas each shard has.-                           | AutoExpandReplicas ReplicaBounds-                           | BlocksReadOnly Bool-                           -- ^ Set to True to have the index read only. False to allow writes and metadata changes.-                           | BlocksRead Bool-                           -- ^ Set to True to disable read operations against the index.-                           | BlocksWrite Bool-                           -- ^ Set to True to disable write operations against the index.-                           | BlocksMetaData Bool-                           -- ^ Set to True to disable metadata operations against the index.-                           | RefreshInterval NominalDiffTime-                           -- ^ The async refresh interval of a shard-                           | IndexConcurrency Int-                           | FailOnMergeFailure Bool-                           | TranslogFlushThresholdOps Int-                           -- ^ When to flush on operations.-                           | TranslogFlushThresholdSize Bytes-                           -- ^ When to flush based on translog (bytes) size.-                           | TranslogFlushThresholdPeriod NominalDiffTime-                           -- ^ When to flush based on a period of not flushing.-                           | TranslogDisableFlush Bool-                           -- ^ Disables flushing. Note, should be set for a short interval and then enabled.-                           | CacheFilterMaxSize (Maybe Bytes)-                           -- ^ The maximum size of filter cache (per segment in shard).-                           | CacheFilterExpire (Maybe NominalDiffTime)-                           -- ^ The expire after access time for filter cache.-                           | GatewaySnapshotInterval NominalDiffTime-                           -- ^ The gateway snapshot interval (only applies to shared gateways).-                           | RoutingAllocationInclude (NonEmpty NodeAttrFilter)-                           -- ^ A node matching any rule will be allowed to host shards from the index.-                           | RoutingAllocationExclude (NonEmpty NodeAttrFilter)-                           -- ^ A node matching any rule will NOT be allowed to host shards from the index.-                           | RoutingAllocationRequire (NonEmpty NodeAttrFilter)-                           -- ^ Only nodes matching all rules will be allowed to host shards from the index.-                           | RoutingAllocationEnable AllocationPolicy-                           -- ^ Enables shard allocation for a specific index.-                           | RoutingAllocationShardsPerNode ShardCount-                           -- ^ Controls the total number of shards (replicas and primaries) allowed to be allocated on a single node.-                           | RecoveryInitialShards InitialShardCount-                           -- ^ When using local gateway a particular shard is recovered only if there can be allocated quorum shards in the cluster.-                           | GCDeletes NominalDiffTime-                           | TTLDisablePurge Bool-                           -- ^ Disables temporarily the purge of expired docs.-                           | TranslogFSType FSType-                           | IndexCompoundFormat CompoundFormat-                           | IndexCompoundOnFlush Bool-                           | WarmerEnabled Bool-                           deriving (Eq, Show, Generic, Typeable)--data AllocationPolicy = AllocAll-                      -- ^ Allows shard allocation for all shards.-                      | AllocPrimaries-                      -- ^ Allows shard allocation only for primary shards.-                      | AllocNewPrimaries-                      -- ^ Allows shard allocation only for primary shards for new indices.-                      | AllocNone-                      -- ^ No shard allocation is allowed-                      deriving (Eq, Read, Show, Generic, Typeable)--data ReplicaBounds = ReplicasBounded Int Int-                   | ReplicasLowerBounded Int-                   | ReplicasUnbounded-                   deriving (Eq, Read, Show, Generic, Typeable)--newtype Bytes = Bytes Int deriving (Eq, Read, Show, Generic, Typeable, Ord, ToJSON, FromJSON)--data FSType = FSSimple-            | FSBuffered deriving (Eq, Read, Show, Generic, Typeable, Ord)--data InitialShardCount = QuorumShards-                       | QuorumMinus1Shards-                       | FullShards-                       | FullMinus1Shards-                       | ExplicitShards Int-                       deriving (Eq, Read, Show, Generic, Typeable)--data NodeAttrFilter = NodeAttrFilter { nodeAttrFilterName   :: NodeAttrName-                                     , nodeAttrFilterValues :: NonEmpty Text}-                                     deriving (Eq, Read, Show, Generic, Ord)--newtype NodeAttrName = NodeAttrName Text deriving (Eq, Read, Show, Ord, Generic, Typeable)--data CompoundFormat = CompoundFileFormat Bool-                    | MergeSegmentVsTotalIndex Double-                    -- ^ percentage between 0 and 1 where 0 is false, 1 is true-                    deriving (Eq, Read, Show, Generic, Typeable)--newtype NominalDiffTimeJSON = NominalDiffTimeJSON { ndtJSON ::  NominalDiffTime }--data IndexSettingsSummary = IndexSettingsSummary { sSummaryIndexName     :: IndexName-                                                 , sSummaryFixedSettings :: IndexSettings-                                                 , sSummaryUpdateable    :: [UpdatableIndexSetting]}-                                                 deriving (Eq, Show, Generic, Typeable)--{-| 'Reply' and 'Method' are type synonyms from 'Network.HTTP.Types.Method.Method' -}-type Reply = Network.HTTP.Client.Response L.ByteString-type Method = NHTM.Method--{-| 'OpenCloseIndex' is a sum type for opening and closing indices.--   <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-open-close.html>--}-data OpenCloseIndex = OpenIndex | CloseIndex deriving (Eq, Read, Show, Generic, Typeable)--data FieldType = GeoPointType-               | GeoShapeType-               | FloatType-               | IntegerType-               | LongType-               | ShortType-               | ByteType deriving (Eq, Read, Show, Generic, Typeable)--data FieldDefinition =-  FieldDefinition { fieldType :: FieldType } deriving (Eq, Read, Show, Generic, Typeable)--{-| An 'IndexTemplate' defines a template that will automatically be-    applied to new indices created. The templates include both-    'IndexSettings' and mappings, and a simple 'TemplatePattern' that-    controls if the template will be applied to the index created.-    Specify mappings as follows: @[toJSON TweetMapping, ...]@--    https://www.elastic.co/guide/en/elasticsearch/reference/1.7/indices-templates.html--}-data IndexTemplate =-  IndexTemplate { templatePattern  :: TemplatePattern-                , templateSettings :: Maybe IndexSettings-                , templateMappings :: [Value]-                }--data MappingField =-  MappingField   { mappingFieldName :: FieldName-                 , fieldDefinition  :: FieldDefinition } deriving (Eq, Read, Show, Generic, Typeable)--{-| Support for type reification of 'Mapping's is currently incomplete, for-    now the mapping API verbiage expects a 'ToJSON'able blob.--    Indexes have mappings, mappings are schemas for the documents contained in the-    index. I'd recommend having only one mapping per index, always having a mapping,-    and keeping different kinds of documents separated if possible.--}-data Mapping = Mapping { typeName      :: TypeName-                       , mappingFields :: [MappingField] } deriving (Eq, Read, Show, Generic, Typeable)--{-| 'BulkOperation' is a sum type for expressing the four kinds of bulk-    operation index, create, delete, and update. 'BulkIndex' behaves like an-    "upsert", 'BulkCreate' will fail if a document already exists at the DocId.--   <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk>--}-data BulkOperation =-    BulkIndex  IndexName MappingName DocId Value-  | BulkCreate IndexName MappingName DocId Value-  | BulkDelete IndexName MappingName DocId-  | BulkUpdate IndexName MappingName DocId Value deriving (Eq, Read, Show, Generic, Typeable)--{-| 'EsResult' describes the standard wrapper JSON document that you see in-    successful Elasticsearch lookups or lookups that couldn't find the document.--}-data EsResult a = EsResult { _index      :: Text-                           , _type       :: Text-                           , _id         :: Text-                           , foundResult :: Maybe (EsResultFound a)} deriving (Eq, Read, Show, Generic, Typeable)--{-| 'EsResultFound' contains the document and its metadata inside of an-    'EsResult' when the document was successfully found.--}-data EsResultFound a = EsResultFound {  _version :: DocVersion-                                     , _source   :: a } deriving (Eq, Read, Show, Generic, Typeable)--{-| 'EsError' is the generic type that will be returned when there was a-    problem. If you can't parse the expected response, its a good idea to-    try parsing this.--}-data EsError = EsError { errorStatus  :: Int-                       , errorMessage :: Text } deriving (Eq, Read, Show, Generic, Typeable)--{-| 'EsProtocolException' will be thrown if Bloodhound cannot parse a response-returned by the ElasticSearch server. If you encounter this error, please-verify that your domain data types and FromJSON instances are working properly-(for example, the 'a' of '[Hit a]' in 'SearchResult.searchHits.hits'). If you're-sure that your mappings are correct, then this error may be an indication of an-incompatibility between Bloodhound and ElasticSearch. Please open a bug report-and be sure to include the exception body.--}-data EsProtocolException = EsProtocolException { esProtoExBody :: L.ByteString }-                                               deriving (Eq, Read, Show, Generic, Typeable)--instance Exception EsProtocolException--data IndexAlias = IndexAlias { srcIndex   :: IndexName-                             , indexAlias :: IndexAliasName } deriving (Eq, Read, Show, Generic, Typeable)--newtype IndexAliasName = IndexAliasName { indexAliasName :: IndexName } deriving (Eq, Read, Show, Generic, ToJSON)--data IndexAliasAction = AddAlias IndexAlias IndexAliasCreate-                      | RemoveAlias IndexAlias deriving (Read, Show, Eq, Generic, Typeable)--data IndexAliasCreate = IndexAliasCreate { aliasCreateRouting :: Maybe AliasRouting-                                         , aliasCreateFilter  :: Maybe Filter}-                                         deriving (Read, Show, Eq, Generic, Typeable)--data AliasRouting = AllAliasRouting RoutingValue-                  | GranularAliasRouting (Maybe SearchAliasRouting) (Maybe IndexAliasRouting)-                  deriving (Read, Show, Eq, Generic, Typeable)--newtype SearchAliasRouting = SearchAliasRouting (NonEmpty RoutingValue) deriving (Read, Show, Eq, Generic, Typeable)--newtype IndexAliasRouting = IndexAliasRouting RoutingValue deriving (Read, Show, Eq, Generic, ToJSON, FromJSON, Typeable)--newtype RoutingValue = RoutingValue { routingValue :: Text } deriving (Read, Show, Eq, Generic, ToJSON, FromJSON, Typeable)--newtype IndexAliasesSummary = IndexAliasesSummary { indexAliasesSummary :: [IndexAliasSummary] } deriving (Read, Show, Eq, Generic, Typeable)--{-| 'IndexAliasSummary' is a summary of an index alias configured for a server. -}-data IndexAliasSummary = IndexAliasSummary { indexAliasSummaryAlias  :: IndexAlias-                                           , indexAliasSummaryCreate :: IndexAliasCreate} deriving (Read, Show, Eq, Generic, Typeable)--{-| 'DocVersion' is an integer version number for a document between 1-and 9.2e+18 used for <<https://www.elastic.co/guide/en/elasticsearch/guide/current/optimistic-concurrency-control.html optimistic concurrency control>>.--}-newtype DocVersion = DocVersion {-      docVersionNumber :: Int-    } deriving (Eq, Read, Show, Generic, Ord, ToJSON)---- | Smart constructor for in-range doc version-mkDocVersion :: Int -> Maybe DocVersion-mkDocVersion i-  | i >= (docVersionNumber minBound) && i <= (docVersionNumber maxBound) =-    Just $ DocVersion i-  | otherwise = Nothing---{-| 'ExternalDocVersion' is a convenience wrapper if your code uses its-own version numbers instead of ones from ES.--}-newtype ExternalDocVersion = ExternalDocVersion DocVersion-    deriving (Eq, Read, Show, Generic, Ord, Bounded, Enum, ToJSON)--{-| 'VersionControl' is specified when indexing documents as a-optimistic concurrency control.--}-data VersionControl = NoVersionControl-                    -- ^ Don't send a version. This is a pure overwrite.-                    | InternalVersion DocVersion-                    -- ^ Use the default ES versioning scheme. Only-                    -- index the document if the version is the same-                    -- as the one specified. Only applicable to-                    -- updates, as you should be getting Version from-                    -- a search result.-                    | ExternalGT ExternalDocVersion-                    -- ^ Use your own version numbering. Only index-                    -- the document if the version is strictly higher-                    -- OR the document doesn't exist. The given-                    -- version will be used as the new version number-                    -- for the stored document. N.B. All updates must-                    -- increment this number, meaning there is some-                    -- global, external ordering of updates.-                    | ExternalGTE ExternalDocVersion-                    -- ^ Use your own version numbering. Only index-                    -- the document if the version is equal or higher-                    -- than the stored version. Will succeed if there-                    -- is no existing document. The given version will-                    -- be used as the new version number for the-                    -- stored document. Use with care, as this could-                    -- result in data loss.-                    | ForceVersion ExternalDocVersion-                    -- ^ The document will always be indexed and the-                    -- given version will be the new version. This is-                    -- typically used for correcting errors. Use with-                    -- care, as this could result in data loss.-                    deriving (Read, Show, Eq, Generic, Ord)--{-| 'DocumentParent' is used to specify a parent document.--}-newtype DocumentParent = DocumentParent DocId-  deriving (Eq, Read, Show, Generic, Typeable)--{-| 'IndexDocumentSettings' are special settings supplied when indexing-a document. For the best backwards compatiblity when new fields are-added, you should probably prefer to start with 'defaultIndexDocumentSettings'--}-data IndexDocumentSettings =-  IndexDocumentSettings { idsVersionControl :: VersionControl-                        , idsParent         :: Maybe DocumentParent-                        } deriving (Eq, Read, Show, Generic, Typeable)--{-| Reasonable default settings. Chooses no version control and no parent.--}-defaultIndexDocumentSettings :: IndexDocumentSettings-defaultIndexDocumentSettings = IndexDocumentSettings NoVersionControl Nothing--{-| '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.--}-type Sort = [SortSpec]--{-| 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.--<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>--}-data SortSpec = DefaultSortSpec DefaultSort-              | GeoDistanceSortSpec SortOrder GeoPoint DistanceUnit deriving (Eq, Read, Show, Generic, Typeable)--{-| 'DefaultSort' is usually the kind of 'SortSpec' you'll want. There's a-    'mkSort' convenience function for when you want to specify only the most-    common parameters.--<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>--}-data DefaultSort =-  DefaultSort { sortFieldName  :: FieldName-              , sortOrder      :: SortOrder-                                  -- default False-              , ignoreUnmapped :: Bool-              , sortMode       :: Maybe SortMode-              , missingSort    :: Maybe Missing-              , nestedFilter   :: Maybe Filter } deriving (Eq, Read, Show, Generic, Typeable)--{-| 'SortOrder' is 'Ascending' or 'Descending', as you might expect. These get-    encoded into "asc" or "desc" when turned into JSON.--<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>--}-data SortOrder = Ascending-               | Descending deriving (Eq, Read, Show, Generic, Typeable)--{-| 'Missing' prescribes how to handle missing fields. A missing field can be-    sorted last, first, or using a custom value as a substitute.--<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#_missing_values>--}-data Missing = LastMissing-             | FirstMissing-             | CustomMissing Text deriving (Eq, Read, Show, Generic, Typeable)--{-| 'SortMode' prescribes how to handle sorting array/multi-valued fields.--http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#_sort_mode_option--}-data SortMode = SortMin-              | SortMax-              | SortSum-              | SortAvg deriving (Eq, Read, Show, Generic, Typeable)--{-| 'mkSort' defaults everything but the 'FieldName' and the 'SortOrder' so-    that you can concisely describe the usual kind of 'SortSpec's you want.--}-mkSort :: FieldName -> SortOrder -> DefaultSort-mkSort fieldName sOrder = DefaultSort fieldName sOrder False Nothing Nothing Nothing--{-| 'Cache' is for telling ES whether it should cache a 'Filter' not.-    'Query's cannot be cached.--}-type Cache   = Bool -- caching on/off-defaultCache :: Cache-defaultCache = False--{-| 'PrefixValue' is used in 'PrefixQuery' as the main query component.--}-type PrefixValue = Text--{-| 'BooleanOperator' is the usual And/Or operators with an ES compatible-    JSON encoding baked in. Used all over the place.--}-data BooleanOperator = And | Or deriving (Eq, Read, Show, Generic, Typeable)--{-| 'ShardCount' is part of 'IndexSettings'--}-newtype ShardCount = ShardCount Int deriving (Eq, Read, Show, Generic, ToJSON, Typeable)--{-| 'ReplicaCount' is part of 'IndexSettings'--}-newtype ReplicaCount = ReplicaCount Int deriving (Eq, Read, Show, Generic, ToJSON, Typeable)--{-| 'IndexName' is used to describe which index to query/create/delete--}-newtype IndexName = IndexName Text deriving (Eq, Generic, Read, Show, ToJSON, FromJSON, Typeable)--{-| 'IndexSelection' is used for APIs which take a single index, a list of-    indexes, or the special @_all@ index.--}-data IndexSelection = IndexList (NonEmpty IndexName)-                    | AllIndexes deriving (Eq, Generic, Show, Typeable)--{-| 'TemplateName' is used to describe which template to query/create/delete--}-newtype TemplateName = TemplateName Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 'TemplatePattern' represents a pattern which is matched against index names--}-newtype TemplatePattern = TemplatePattern Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 'MappingName' is part of mappings which are how ES describes and schematizes-    the data in the indices.--}-newtype MappingName = MappingName Text deriving (Eq, Generic, Read, Show, ToJSON, FromJSON, Typeable)--{-| 'DocId' is a generic wrapper value for expressing unique Document IDs.-    Can be set by the user or created by ES itself. Often used in client-    functions for poking at specific documents.--}-newtype DocId = DocId Text deriving (Eq, Generic, Read, Show, ToJSON, FromJSON, Typeable)--{-| 'QueryString' is used to wrap query text bodies, be they human written or not.--}-newtype QueryString = QueryString Text deriving (Eq, Generic, Read, Show, ToJSON, FromJSON, Typeable)--{-| 'FieldName' is used all over the place wherever a specific field within-     a document needs to be specified, usually in 'Query's or 'Filter's.--}-newtype FieldName = FieldName Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)---{-| 'Script' is often used in place of 'FieldName' to specify more-complex ways of extracting a value from a document.--}-newtype Script = Script { scriptText :: Text } deriving (Eq, Read, Show, Generic, Typeable)--{-| 'CacheName' is used in 'RegexpFilter' for describing the-    'CacheKey' keyed caching behavior.--}-newtype CacheName = CacheName Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 'CacheKey' is used in 'RegexpFilter' to key regex caching.--}-newtype CacheKey =-  CacheKey Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype Existence =-  Existence Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype NullValue =-  NullValue Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype CutoffFrequency =-  CutoffFrequency Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype Analyzer =-  Analyzer Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype MaxExpansions =-  MaxExpansions Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 'Lenient', if set to true, will cause format based failures to be-    ignored. I don't know what the bloody default is, Elasticsearch-    documentation didn't say what it was. Let me know if you figure it out.--}-newtype Lenient =-  Lenient Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype Tiebreaker =-  Tiebreaker Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype Boost =-  Boost Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype BoostTerms =-  BoostTerms Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 'MinimumMatch' controls how many should clauses in the bool query should-     match. Can be an absolute value (2) or a percentage (30%) or a-     combination of both.--}-newtype MinimumMatch =-  MinimumMatch Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype DisableCoord =-  DisableCoord Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype IgnoreTermFrequency =-  IgnoreTermFrequency Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype MinimumTermFrequency =-  MinimumTermFrequency Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype MaxQueryTerms =-  MaxQueryTerms Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype Fuzziness =-  Fuzziness Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 'PrefixLength' is the prefix length used in queries, defaults to 0. -}-newtype PrefixLength =-  PrefixLength Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype TypeName =-  TypeName Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype PercentMatch =-  PercentMatch Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype StopWord =-  StopWord Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype QueryPath =-  QueryPath Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 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. -}-newtype AllowLeadingWildcard =-  AllowLeadingWildcard     Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype LowercaseExpanded =-  LowercaseExpanded        Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype EnablePositionIncrements =-  EnablePositionIncrements Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| By default, wildcard terms in a query are not analyzed.-    Setting 'AnalyzeWildcard' to true enables best-effort analysis.--}-newtype AnalyzeWildcard = AnalyzeWildcard Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 'GeneratePhraseQueries' defaults to false.--}-newtype GeneratePhraseQueries =-  GeneratePhraseQueries Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 'Locale' is used for string conversions - defaults to ROOT.--}-newtype Locale        = Locale        Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype MaxWordLength = MaxWordLength Int  deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype MinWordLength = MinWordLength Int  deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)--{-| 'PhraseSlop' sets the default slop for phrases, 0 means exact-     phrase matches. Default is 0.--}-newtype PhraseSlop      = PhraseSlop      Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype MinDocFrequency = MinDocFrequency Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)-newtype MaxDocFrequency = MaxDocFrequency Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)---- | Newtype wrapper to parse ES's concerning tendency to in some APIs return a floating point number of milliseconds since epoch ಠ_ಠ-newtype POSIXMS = POSIXMS { posixMS :: UTCTime }--{-| 'unpackId' is a silly convenience function that gets used once.--}-unpackId :: DocId -> Text-unpackId (DocId docId) = docId--type TrackSortScores = Bool-newtype From = From Int deriving (Eq, Read, Show, Generic, ToJSON)-newtype Size = Size Int deriving (Eq, Read, Show, Generic, ToJSON)--data Search = Search { queryBody       :: Maybe Query-                     , filterBody      :: Maybe Filter-                     , sortBody        :: Maybe Sort-                     , aggBody         :: Maybe Aggregations-                     , highlight       :: Maybe Highlights-                       -- default False-                     , trackSortScores :: TrackSortScores-                     , from            :: From-                     , size            :: Size-                     , searchType      :: SearchType-                     , fields          :: Maybe [FieldName]-                     , source          :: Maybe Source } deriving (Eq, Read, Show, Generic, Typeable)--data SearchType = SearchTypeQueryThenFetch-                | SearchTypeDfsQueryThenFetch-                | SearchTypeCount-                | SearchTypeScan-                | SearchTypeQueryAndFetch-                | SearchTypeDfsQueryAndFetch-  deriving (Eq, Read, Show, Generic, Typeable)--data Source =-    NoSource-  | SourcePatterns PatternOrPatterns-  | SourceIncludeExclude Include Exclude-    deriving (Read, Show, Eq, Generic, Typeable)--data PatternOrPatterns = PopPattern   Pattern-                       | PopPatterns [Pattern] deriving (Eq, Read, Show, Generic, Typeable)--data Include = Include [Pattern] deriving (Eq, Read, Show, Generic, Typeable)-data Exclude = Exclude [Pattern] deriving (Eq, Read, Show, Generic, Typeable)--newtype Pattern = Pattern Text deriving (Eq, Read, Show, Generic, Typeable)--data Highlights = Highlights { globalsettings  :: Maybe HighlightSettings-                             , highlightFields :: [FieldHighlight]-                             } deriving (Read, Show, Eq, Generic, Typeable)--data FieldHighlight = FieldHighlight FieldName (Maybe HighlightSettings)-                      deriving (Read, Show, Eq, Generic, Typeable)---data HighlightSettings = Plain PlainHighlight-                       | Postings PostingsHighlight-                       | FastVector FastVectorHighlight-                         deriving (Read, Show, Eq, Generic, Typeable)-data PlainHighlight =-    PlainHighlight { plainCommon  :: Maybe CommonHighlight-                   , plainNonPost :: Maybe NonPostings } deriving (Read, Show, Eq, Generic, Typeable)-- -- This requires that index_options are set to 'offset' in the mapping.-data PostingsHighlight = PostingsHighlight (Maybe CommonHighlight) deriving (Read, Show, Eq, Generic, Typeable)---- This requires that term_vector is set to 'with_positions_offsets' in the mapping.-data FastVectorHighlight =-    FastVectorHighlight { fvCommon          :: Maybe CommonHighlight-                        , fvNonPostSettings :: Maybe NonPostings-                        , boundaryChars     :: Maybe Text-                        , boundaryMaxScan   :: Maybe Int-                        , fragmentOffset    :: Maybe Int-                        , matchedFields     :: [Text]-                        , phraseLimit       :: Maybe Int-                        } deriving (Read, Show, Eq, Generic, Typeable)--data CommonHighlight =-    CommonHighlight { order             :: Maybe Text-                    , forceSource       :: Maybe Bool-                    , tag               :: Maybe HighlightTag-                    , encoder           :: Maybe HighlightEncoder-                    , noMatchSize       :: Maybe Int-                    , highlightQuery    :: Maybe Query-                    , requireFieldMatch :: Maybe Bool-                    } deriving (Read, Show, Eq, Generic, Typeable)---- Settings that are only applicable to FastVector and Plain highlighters.-data NonPostings =-    NonPostings { fragmentSize      :: Maybe Int-                , numberOfFragments :: Maybe Int} deriving (Read, Show, Eq, Generic, Typeable)--data HighlightEncoder = DefaultEncoder-                      | HTMLEncoder-                      deriving (Read, Show, Eq, Generic, Typeable)---- NOTE: Should the tags use some kind of HTML type, rather than Text?-data HighlightTag = TagSchema Text-                  | CustomTags ([Text], [Text]) -- Only uses more than the first value in the lists if fvh-                  deriving (Read, Show, Eq, Generic, Typeable)---data Query =-  TermQuery                     Term (Maybe Boost)-  | TermsQuery                  Text (NonEmpty Text)-  | QueryMatchQuery             MatchQuery-  | QueryMultiMatchQuery        MultiMatchQuery-  | QueryBoolQuery              BoolQuery-  | QueryBoostingQuery          BoostingQuery-  | QueryCommonTermsQuery       CommonTermsQuery-  | ConstantScoreFilter         Filter Boost-  | ConstantScoreQuery          Query Boost-  | QueryDisMaxQuery            DisMaxQuery-  | QueryFilteredQuery          FilteredQuery-  | QueryFuzzyLikeThisQuery     FuzzyLikeThisQuery-  | QueryFuzzyLikeFieldQuery    FuzzyLikeFieldQuery-  | QueryFuzzyQuery             FuzzyQuery-  | QueryHasChildQuery          HasChildQuery-  | QueryHasParentQuery         HasParentQuery-  | IdsQuery                    MappingName [DocId]-  | QueryIndicesQuery           IndicesQuery-  | MatchAllQuery               (Maybe Boost)-  | QueryMoreLikeThisQuery      MoreLikeThisQuery-  | QueryMoreLikeThisFieldQuery MoreLikeThisFieldQuery-  | QueryNestedQuery            NestedQuery-  | QueryPrefixQuery            PrefixQuery-  | QueryQueryStringQuery       QueryStringQuery-  | QuerySimpleQueryStringQuery SimpleQueryStringQuery-  | QueryRangeQuery             RangeQuery-  | QueryRegexpQuery            RegexpQuery-  deriving (Eq, Read, Show, Generic, Typeable)--data RegexpQuery =-  RegexpQuery { regexpQueryField :: FieldName-              , regexpQuery      :: Regexp-              , regexpQueryFlags :: RegexpFlags-              , regexpQueryBoost :: Maybe Boost-              } deriving (Eq, Read, Show, Generic, Typeable)--data RangeQuery =-  RangeQuery { rangeQueryField :: FieldName-             , rangeQueryRange :: RangeValue-             , rangeQueryBoost :: Boost } deriving (Eq, Read, Show, Generic, Typeable)--mkRangeQuery :: FieldName -> RangeValue -> RangeQuery-mkRangeQuery f r = RangeQuery f r (Boost 1.0)--data SimpleQueryStringQuery =-  SimpleQueryStringQuery-    { simpleQueryStringQuery             :: QueryString-    , simpleQueryStringField             :: Maybe FieldOrFields-    , simpleQueryStringOperator          :: Maybe BooleanOperator-    , simpleQueryStringAnalyzer          :: Maybe Analyzer-    , simpleQueryStringFlags             :: Maybe (NonEmpty SimpleQueryFlag)-    , simpleQueryStringLowercaseExpanded :: Maybe LowercaseExpanded-    , simpleQueryStringLocale            :: Maybe Locale-    } deriving (Eq, Read, Show, Generic, Typeable)--data SimpleQueryFlag =-  SimpleQueryAll-  | SimpleQueryNone-  | SimpleQueryAnd-  | SimpleQueryOr-  | SimpleQueryPrefix-  | SimpleQueryPhrase-  | SimpleQueryPrecedence-  | SimpleQueryEscape-  | SimpleQueryWhitespace-  | SimpleQueryFuzzy-  | SimpleQueryNear-  | SimpleQuerySlop deriving (Eq, Read, Show, Generic, Typeable)---- use_dis_max and tie_breaker when fields are plural?-data QueryStringQuery =-  QueryStringQuery-  { queryStringQuery                    :: QueryString-  , queryStringDefaultField             :: Maybe FieldName-  , queryStringOperator                 :: Maybe BooleanOperator-  , queryStringAnalyzer                 :: Maybe Analyzer-  , queryStringAllowLeadingWildcard     :: Maybe AllowLeadingWildcard-  , queryStringLowercaseExpanded        :: Maybe LowercaseExpanded-  , queryStringEnablePositionIncrements :: Maybe EnablePositionIncrements-  , queryStringFuzzyMaxExpansions       :: Maybe MaxExpansions-  , queryStringFuzziness                :: Maybe Fuzziness-  , queryStringFuzzyPrefixLength        :: Maybe PrefixLength-  , queryStringPhraseSlop               :: Maybe PhraseSlop-  , queryStringBoost                    :: Maybe Boost-  , queryStringAnalyzeWildcard          :: Maybe AnalyzeWildcard-  , queryStringGeneratePhraseQueries    :: Maybe GeneratePhraseQueries-  , queryStringMinimumShouldMatch       :: Maybe MinimumMatch-  , queryStringLenient                  :: Maybe Lenient-  , queryStringLocale                   :: Maybe Locale-  } deriving (Eq, Read, Show, Generic, Typeable)--mkQueryStringQuery :: QueryString -> QueryStringQuery-mkQueryStringQuery qs =-  QueryStringQuery qs Nothing Nothing-  Nothing Nothing Nothing Nothing-  Nothing Nothing Nothing Nothing-  Nothing Nothing Nothing Nothing-  Nothing Nothing--data FieldOrFields = FofField   FieldName-                   | FofFields (NonEmpty FieldName) deriving (Eq, Read, Show, Generic, Typeable)--data PrefixQuery =-  PrefixQuery-  { prefixQueryField       :: FieldName-  , prefixQueryPrefixValue :: Text-  , prefixQueryBoost       :: Maybe Boost } deriving (Eq, Read, Show, Generic, Typeable)--data NestedQuery =-  NestedQuery-  { nestedQueryPath      :: QueryPath-  , nestedQueryScoreType :: ScoreType-  , nestedQuery          :: Query } deriving (Eq, Read, Show, Generic, Typeable)--data MoreLikeThisFieldQuery =-  MoreLikeThisFieldQuery-  { moreLikeThisFieldText            :: Text-  , moreLikeThisFieldFields          :: FieldName-                                        -- default 0.3 (30%)-  , moreLikeThisFieldPercentMatch    :: Maybe PercentMatch-  , moreLikeThisFieldMinimumTermFreq :: Maybe MinimumTermFrequency-  , moreLikeThisFieldMaxQueryTerms   :: Maybe MaxQueryTerms-  , moreLikeThisFieldStopWords       :: Maybe (NonEmpty StopWord)-  , moreLikeThisFieldMinDocFrequency :: Maybe MinDocFrequency-  , moreLikeThisFieldMaxDocFrequency :: Maybe MaxDocFrequency-  , moreLikeThisFieldMinWordLength   :: Maybe MinWordLength-  , moreLikeThisFieldMaxWordLength   :: Maybe MaxWordLength-  , moreLikeThisFieldBoostTerms      :: Maybe BoostTerms-  , moreLikeThisFieldBoost           :: Maybe Boost-  , moreLikeThisFieldAnalyzer        :: Maybe Analyzer-  } deriving (Eq, Read, Show, Generic, Typeable)--data MoreLikeThisQuery =-  MoreLikeThisQuery-  { moreLikeThisText            :: Text-  , moreLikeThisFields          :: Maybe (NonEmpty FieldName)-    -- default 0.3 (30%)-  , moreLikeThisPercentMatch    :: Maybe PercentMatch-  , moreLikeThisMinimumTermFreq :: Maybe MinimumTermFrequency-  , moreLikeThisMaxQueryTerms   :: Maybe MaxQueryTerms-  , moreLikeThisStopWords       :: Maybe (NonEmpty StopWord)-  , moreLikeThisMinDocFrequency :: Maybe MinDocFrequency-  , moreLikeThisMaxDocFrequency :: Maybe MaxDocFrequency-  , moreLikeThisMinWordLength   :: Maybe MinWordLength-  , moreLikeThisMaxWordLength   :: Maybe MaxWordLength-  , moreLikeThisBoostTerms      :: Maybe BoostTerms-  , moreLikeThisBoost           :: Maybe Boost-  , moreLikeThisAnalyzer        :: Maybe Analyzer-  } deriving (Eq, Read, Show, Generic, Typeable)--data IndicesQuery =-  IndicesQuery-  { indicesQueryIndices :: [IndexName]-  , indicesQuery        :: Query-    -- default "all"-  , indicesQueryNoMatch :: Maybe Query } deriving (Eq, Read, Show, Generic, Typeable)--data HasParentQuery =-  HasParentQuery-  { hasParentQueryType      :: TypeName-  , hasParentQuery          :: Query-  , hasParentQueryScoreType :: Maybe ScoreType } deriving (Eq, Read, Show, Generic, Typeable)--data HasChildQuery =-  HasChildQuery-  { hasChildQueryType      :: TypeName-  , hasChildQuery          :: Query-  , hasChildQueryScoreType :: Maybe ScoreType } deriving (Eq, Read, Show, Generic, Typeable)--data ScoreType =-  ScoreTypeMax-  | ScoreTypeSum-  | ScoreTypeAvg-  | ScoreTypeNone deriving (Eq, Read, Show, Generic, Typeable)--data FuzzyQuery =-  FuzzyQuery { fuzzyQueryField         :: FieldName-             , fuzzyQueryValue         :: Text-             , fuzzyQueryPrefixLength  :: PrefixLength-             , fuzzyQueryMaxExpansions :: MaxExpansions-             , fuzzyQueryFuzziness     :: Fuzziness-             , fuzzyQueryBoost         :: Maybe Boost-             } deriving (Eq, Read, Show, Generic, Typeable)--data FuzzyLikeFieldQuery =-  FuzzyLikeFieldQuery-  { fuzzyLikeField                    :: FieldName-    -- anaphora is good for the soul.-  , fuzzyLikeFieldText                :: Text-  , fuzzyLikeFieldMaxQueryTerms       :: MaxQueryTerms-  , fuzzyLikeFieldIgnoreTermFrequency :: IgnoreTermFrequency-  , fuzzyLikeFieldFuzziness           :: Fuzziness-  , fuzzyLikeFieldPrefixLength        :: PrefixLength-  , fuzzyLikeFieldBoost               :: Boost-  , fuzzyLikeFieldAnalyzer            :: Maybe Analyzer-  } deriving (Eq, Read, Show, Generic, Typeable)--data FuzzyLikeThisQuery =-  FuzzyLikeThisQuery-  { fuzzyLikeFields              :: [FieldName]-  , fuzzyLikeText                :: Text-  , fuzzyLikeMaxQueryTerms       :: MaxQueryTerms-  , fuzzyLikeIgnoreTermFrequency :: IgnoreTermFrequency-  , fuzzyLikeFuzziness           :: Fuzziness-  , fuzzyLikePrefixLength        :: PrefixLength-  , fuzzyLikeBoost               :: Boost-  , fuzzyLikeAnalyzer            :: Maybe Analyzer-  } deriving (Eq, Read, Show, Generic, Typeable)--data FilteredQuery =-  FilteredQuery-  { filteredQuery  :: Query-  , filteredFilter :: Filter } deriving (Eq, Read, Show, Generic, Typeable)--data DisMaxQuery =-  DisMaxQuery { disMaxQueries    :: [Query]-                -- default 0.0-              , disMaxTiebreaker :: Tiebreaker-              , disMaxBoost      :: Maybe Boost-              } deriving (Eq, Read, Show, Generic, Typeable)--data MatchQuery =-  MatchQuery { matchQueryField           :: FieldName-             , matchQueryQueryString     :: QueryString-             , matchQueryOperator        :: BooleanOperator-             , matchQueryZeroTerms       :: ZeroTermsQuery-             , matchQueryCutoffFrequency :: Maybe CutoffFrequency-             , matchQueryMatchType       :: Maybe MatchQueryType-             , matchQueryAnalyzer        :: Maybe Analyzer-             , matchQueryMaxExpansions   :: Maybe MaxExpansions-             , matchQueryLenient         :: Maybe Lenient-             , matchQueryBoost           :: Maybe Boost } deriving (Eq, Read, Show, Generic, Typeable)--{-| 'mkMatchQuery' is a convenience function that defaults the less common parameters,-    enabling you to provide only the 'FieldName' and 'QueryString' to make a 'MatchQuery'--}-mkMatchQuery :: FieldName -> QueryString -> MatchQuery-mkMatchQuery field query = MatchQuery field query Or ZeroTermsNone Nothing Nothing Nothing Nothing Nothing Nothing--data MatchQueryType =-  MatchPhrase-  | MatchPhrasePrefix deriving (Eq, Read, Show, Generic, Typeable)--data MultiMatchQuery =-  MultiMatchQuery { multiMatchQueryFields          :: [FieldName]-                  , multiMatchQueryString          :: QueryString-                  , multiMatchQueryOperator        :: BooleanOperator-                  , multiMatchQueryZeroTerms       :: ZeroTermsQuery-                  , multiMatchQueryTiebreaker      :: Maybe Tiebreaker-                  , multiMatchQueryType            :: Maybe MultiMatchQueryType-                  , multiMatchQueryCutoffFrequency :: Maybe CutoffFrequency-                  , multiMatchQueryAnalyzer        :: Maybe Analyzer-                  , multiMatchQueryMaxExpansions   :: Maybe MaxExpansions-                  , multiMatchQueryLenient         :: Maybe Lenient } deriving (Eq, Read, Show, Generic, Typeable)--{-| 'mkMultiMatchQuery' is a convenience function that defaults the less common parameters,-    enabling you to provide only the list of 'FieldName's and 'QueryString' to-    make a 'MultiMatchQuery'.--}--mkMultiMatchQuery :: [FieldName] -> QueryString -> MultiMatchQuery-mkMultiMatchQuery matchFields query =-  MultiMatchQuery matchFields query-  Or ZeroTermsNone Nothing Nothing Nothing Nothing Nothing Nothing--data MultiMatchQueryType =-  MultiMatchBestFields-  | MultiMatchMostFields-  | MultiMatchCrossFields-  | MultiMatchPhrase-  | MultiMatchPhrasePrefix deriving (Eq, Read, Show, Generic, Typeable)--data BoolQuery =-  BoolQuery { boolQueryMustMatch          :: [Query]-            , boolQueryMustNotMatch       :: [Query]-            , boolQueryShouldMatch        :: [Query]-            , boolQueryMinimumShouldMatch :: Maybe MinimumMatch-            , boolQueryBoost              :: Maybe Boost-            , boolQueryDisableCoord       :: Maybe DisableCoord-            } deriving (Eq, Read, Show, Generic, Typeable)--mkBoolQuery :: [Query] -> [Query] -> [Query] -> BoolQuery-mkBoolQuery must mustNot should =-  BoolQuery must mustNot should Nothing Nothing Nothing--data BoostingQuery =-  BoostingQuery { positiveQuery :: Query-                , negativeQuery :: Query-                , negativeBoost :: Boost } deriving (Eq, Read, Show, Generic, Typeable)--data CommonTermsQuery =-  CommonTermsQuery { commonField              :: FieldName-                   , commonQuery              :: QueryString-                   , commonCutoffFrequency    :: CutoffFrequency-                   , commonLowFreqOperator    :: BooleanOperator-                   , commonHighFreqOperator   :: BooleanOperator-                   , commonMinimumShouldMatch :: Maybe CommonMinimumMatch-                   , commonBoost              :: Maybe Boost-                   , commonAnalyzer           :: Maybe Analyzer-                   , commonDisableCoord       :: Maybe DisableCoord-                   } deriving (Eq, Read, Show, Generic, Typeable)--data CommonMinimumMatch =-    CommonMinimumMatchHighLow MinimumMatchHighLow-  | CommonMinimumMatch        MinimumMatch-  deriving (Eq, Read, Show, Generic, Typeable)--data MinimumMatchHighLow =-  MinimumMatchHighLow { lowFreq  :: MinimumMatch-                      , highFreq :: MinimumMatch } deriving (Eq, Read, Show, Generic, Typeable)--data Filter = AndFilter [Filter] Cache-            | OrFilter  [Filter] Cache-            | NotFilter  Filter  Cache-            | IdentityFilter-            | BoolFilter BoolMatch-            | ExistsFilter FieldName -- always cached-            | GeoBoundingBoxFilter GeoBoundingBoxConstraint-            | GeoDistanceFilter GeoPoint Distance DistanceType OptimizeBbox Cache-            | GeoDistanceRangeFilter GeoPoint DistanceRange-            | GeoPolygonFilter FieldName [LatLon]-            | IdsFilter MappingName [DocId]-            | LimitFilter Int-            | MissingFilter FieldName Existence NullValue-            | PrefixFilter  FieldName PrefixValue Cache-            | QueryFilter   Query Cache-            | RangeFilter   FieldName RangeValue RangeExecution Cache-            | RegexpFilter  FieldName Regexp RegexpFlags CacheName Cache CacheKey-            | TermFilter    Term Cache-              deriving (Eq, Read, Show, Generic, Typeable)--data ZeroTermsQuery = ZeroTermsNone-                    | ZeroTermsAll deriving (Eq, Read, Show, Generic, Typeable)--data RangeExecution = RangeExecutionIndex-                    | RangeExecutionFielddata deriving (Eq, Read, Show, Generic, Typeable)--newtype Regexp = Regexp Text deriving (Eq, Read, Show, Generic, Typeable, FromJSON)--data RegexpFlags = AllRegexpFlags-                 | NoRegexpFlags-                 | SomeRegexpFlags (NonEmpty RegexpFlag) deriving (Eq, Read, Show, Generic, Typeable)--data RegexpFlag = AnyString-                | Automaton-                | Complement-                | Empty-                | Intersection-                | Interval deriving (Eq, Read, Show, Generic, Typeable)--newtype LessThan = LessThan Double deriving (Eq, Read, Show, Generic, Typeable)-newtype LessThanEq = LessThanEq Double deriving (Eq, Read, Show, Generic, Typeable)-newtype GreaterThan = GreaterThan Double deriving (Eq, Read, Show, Generic, Typeable)-newtype GreaterThanEq = GreaterThanEq Double deriving (Eq, Read, Show, Generic, Typeable)--newtype LessThanD = LessThanD UTCTime deriving (Eq, Read, Show, Generic, Typeable)-newtype LessThanEqD = LessThanEqD UTCTime deriving (Eq, Read, Show, Generic, Typeable)-newtype GreaterThanD = GreaterThanD UTCTime deriving (Eq, Read, Show, Generic, Typeable)-newtype GreaterThanEqD = GreaterThanEqD UTCTime deriving (Eq, Read, Show, Generic, Typeable)--data RangeValue = RangeDateLte LessThanEqD-                | RangeDateLt LessThanD-                | RangeDateGte GreaterThanEqD-                | RangeDateGt GreaterThanD-                | RangeDateGtLt GreaterThanD LessThanD-                | RangeDateGteLte GreaterThanEqD LessThanEqD-                | RangeDateGteLt GreaterThanEqD LessThanD-                | RangeDateGtLte GreaterThanD LessThanEqD-                | RangeDoubleLte LessThanEq-                | RangeDoubleLt LessThan-                | RangeDoubleGte GreaterThanEq-                | RangeDoubleGt GreaterThan-                | RangeDoubleGtLt GreaterThan LessThan-                | RangeDoubleGteLte GreaterThanEq LessThanEq-                | RangeDoubleGteLt GreaterThanEq LessThan-                | RangeDoubleGtLte GreaterThan LessThanEq-                deriving (Eq, Read, Show, Generic, Typeable)--rangeValueToPair :: RangeValue -> [Pair]-rangeValueToPair rv = case rv of-  RangeDateLte (LessThanEqD t)                       -> ["lte" .= t]-  RangeDateGte (GreaterThanEqD t)                    -> ["gte" .= t]-  RangeDateLt (LessThanD t)                          -> ["lt"  .= t]-  RangeDateGt (GreaterThanD t)                       -> ["gt"  .= t]-  RangeDateGteLte (GreaterThanEqD l) (LessThanEqD g) -> ["gte" .= l, "lte" .= g]-  RangeDateGtLte (GreaterThanD l) (LessThanEqD g)    -> ["gt"  .= l, "lte" .= g]-  RangeDateGteLt (GreaterThanEqD l) (LessThanD g)    -> ["gte" .= l, "lt"  .= g]-  RangeDateGtLt (GreaterThanD l) (LessThanD g)       -> ["gt"  .= l, "lt"  .= g]-  RangeDoubleLte (LessThanEq t)                      -> ["lte" .= t]-  RangeDoubleGte (GreaterThanEq t)                   -> ["gte" .= t]-  RangeDoubleLt (LessThan t)                         -> ["lt"  .= t]-  RangeDoubleGt (GreaterThan t)                      -> ["gt"  .= t]-  RangeDoubleGteLte (GreaterThanEq l) (LessThanEq g) -> ["gte" .= l, "lte" .= g]-  RangeDoubleGtLte (GreaterThan l) (LessThanEq g)    -> ["gt"  .= l, "lte" .= g]-  RangeDoubleGteLt (GreaterThanEq l) (LessThan g)    -> ["gte" .= l, "lt"  .= g]-  RangeDoubleGtLt (GreaterThan l) (LessThan g)       -> ["gt"  .= l, "lt"  .= g]--data Term = Term { termField :: Text-                 , termValue :: Text } deriving (Eq, Read, Show, Generic, Typeable)--data BoolMatch = MustMatch    Term  Cache-               | MustNotMatch Term  Cache-               | ShouldMatch [Term] Cache deriving (Eq, Read, Show, Generic, Typeable)---- "memory" or "indexed"-data GeoFilterType = GeoFilterMemory-                   | GeoFilterIndexed deriving (Eq, Read, Show, Generic, Typeable)--data LatLon = LatLon { lat :: Double-                     , lon :: Double } deriving (Eq, Read, Show, Generic, Typeable)--data GeoBoundingBox =-  GeoBoundingBox { topLeft     :: LatLon-                 , bottomRight :: LatLon } deriving (Eq, Read, Show, Generic, Typeable)--data GeoBoundingBoxConstraint =-  GeoBoundingBoxConstraint { geoBBField        :: FieldName-                           , constraintBox     :: GeoBoundingBox-                           , bbConstraintcache :: Cache-                           , geoType           :: GeoFilterType-                           } deriving (Eq, Read, Show, Generic, Typeable)--data GeoPoint =-  GeoPoint { geoField :: FieldName-           , latLon   :: LatLon} deriving (Eq, Read, Show, Generic, Typeable)--data DistanceUnit = Miles-                  | Yards-                  | Feet-                  | Inches-                  | Kilometers-                  | Meters-                  | Centimeters-                  | Millimeters-                  | NauticalMiles deriving (Eq, Read, Show, Generic, Typeable)--data DistanceType = Arc-                  | SloppyArc -- doesn't exist <1.0-                  | Plane deriving (Eq, Read, Show, Generic, Typeable)--data OptimizeBbox = OptimizeGeoFilterType GeoFilterType-                  | NoOptimizeBbox deriving (Eq, Read, Show, Generic, Typeable)--data Distance =-  Distance { coefficient :: Double-           , unit        :: DistanceUnit } deriving (Eq, Read, Show, Generic, Typeable)--data DistanceRange =-  DistanceRange { distanceFrom :: Distance-                , distanceTo   :: Distance } deriving (Eq, Read, Show, Generic, Typeable)--data SearchResult a =-  SearchResult { took         :: Int-               , timedOut     :: Bool-               , shards       :: ShardResult-               , searchHits   :: SearchHits a-               , aggregations :: Maybe AggregationResults-               , scrollId     :: Maybe ScrollId } deriving (Eq, Read, Show, Generic, Typeable)--newtype ScrollId = ScrollId Text deriving (Eq, Read, Show, Generic, Ord, ToJSON, FromJSON)--type Score = Maybe Double--data SearchHits a =-  SearchHits { hitsTotal :: Int-             , maxScore  :: Score-             , hits      :: [Hit a] } deriving (Eq, Read, Show, Generic, Typeable)---instance Monoid (SearchHits a) where-  mempty = SearchHits 0 Nothing mempty-  mappend (SearchHits ta ma ha) (SearchHits tb mb hb) =-    SearchHits (ta + tb) (max ma mb) (ha <> hb)---data Hit a =-  Hit { hitIndex     :: IndexName-      , hitType      :: MappingName-      , hitDocId     :: DocId-      , hitScore     :: Score-      , hitSource    :: Maybe a-      , hitHighlight :: Maybe HitHighlight } deriving (Eq, Read, Show, Generic, Typeable)--data ShardResult =-  ShardResult { shardTotal       :: Int-              , shardsSuccessful :: Int-              , shardsFailed     :: Int } deriving (Eq, Read, Show, Generic, Typeable)--type HitHighlight = M.Map Text [Text]--showText :: Show a => a -> Text-showText = T.pack . show--readMay :: Read a => String -> Maybe a-readMay s = case reads s of-              (a, ""):_ -> Just a-              _ -> Nothing--parseReadText :: Read a => Text -> Parser a-parseReadText = maybe mzero return . readMay . T.unpack--type Aggregations = M.Map Text Aggregation--emptyAggregations :: Aggregations-emptyAggregations = M.empty--mkAggregations :: Text -> Aggregation -> Aggregations-mkAggregations name aggregation = M.insert name aggregation emptyAggregations--data TermOrder = TermOrder{ termSortField :: Text-                          , termSortOrder :: SortOrder } deriving (Eq, Read, Show, Generic, Typeable)--data TermInclusion = TermInclusion Text-                   | TermPattern Text Text deriving (Eq, Read, Show, Generic, Typeable)--data CollectionMode = BreadthFirst-                    | DepthFirst deriving (Eq, Read, Show, Generic, Typeable)--data ExecutionHint = Ordinals-                   | GlobalOrdinals-                   | GlobalOrdinalsHash-                   | GlobalOrdinalsLowCardinality-                   | Map deriving (Eq, Read, Show, Generic, Typeable)--data TimeInterval = Weeks-                  | Days-                  | Hours-                  | Minutes-                  | Seconds deriving Eq--data Interval = Year-              | Quarter-              | Month-              | Week-              | Day-              | Hour-              | Minute-              | Second-              | FractionalInterval Float TimeInterval deriving (Eq, Read, Show, Generic, Typeable)--data Aggregation = TermsAgg TermsAggregation-                 | DateHistogramAgg DateHistogramAggregation-                 | ValueCountAgg ValueCountAggregation-                 | FilterAgg FilterAggregation-                 | DateRangeAgg DateRangeAggregation-                 | MissingAgg MissingAggregation deriving (Eq, Read, Show, Generic, Typeable)--data MissingAggregation = MissingAggregation-  { maField :: Text-  } deriving (Eq, Read, Show, Generic, Typeable)--data TermsAggregation = TermsAggregation { term              :: Either Text Text-                                         , termInclude       :: Maybe TermInclusion-                                         , termExclude       :: Maybe TermInclusion-                                         , termOrder         :: Maybe TermOrder-                                         , termMinDocCount   :: Maybe Int-                                         , termSize          :: Maybe Int-                                         , termShardSize     :: Maybe Int-                                         , termCollectMode   :: Maybe CollectionMode-                                         , termExecutionHint :: Maybe ExecutionHint-                                         , termAggs          :: Maybe Aggregations-                                    } deriving (Eq, Read, Show, Generic, Typeable)--data DateHistogramAggregation = DateHistogramAggregation { dateField      :: FieldName-                                                         , dateInterval   :: Interval-                                                         , dateFormat     :: Maybe Text-                                                         -- pre and post deprecated in 1.5-                                                         , datePreZone    :: Maybe Text-                                                         , datePostZone   :: Maybe Text-                                                         , datePreOffset  :: Maybe Text-                                                         , datePostOffset :: Maybe Text-                                                         , dateAggs       :: Maybe Aggregations-                                                         } deriving (Eq, Read, Show, Generic, Typeable)---data DateRangeAggregation = DateRangeAggregation { draField  :: FieldName-                                                 , draFormat :: Maybe Text-                                                 , draRanges :: NonEmpty DateRangeAggRange-                                                 } deriving (Eq, Read, Show, Generic, Typeable)--data DateRangeAggRange = DateRangeFrom DateMathExpr-                       | DateRangeTo DateMathExpr-                       | DateRangeFromAndTo DateMathExpr DateMathExpr deriving (Eq, Read, Show, Generic, Typeable)---- | See <https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#date-math> for more information.-data DateMathExpr = DateMathExpr DateMathAnchor [DateMathModifier] deriving (Eq, Read, Show, Generic, Typeable)----- | Starting point for a date range. This along with the 'DateMathModifiers' gets you the date ES will start from.-data DateMathAnchor = DMNow-                    | DMDate Day deriving (Eq, Read, Show, Generic, Typeable)--data DateMathModifier = AddTime Int DateMathUnit-                      | SubtractTime Int DateMathUnit-                      | RoundDownTo DateMathUnit deriving (Eq, Read, Show, Generic, Typeable)--data DateMathUnit = DMYear-                  | DMMonth-                  | DMWeek-                  | DMDay-                  | DMHour-                  | DMMinute-                  | DMSecond deriving (Eq, Read, Show, Generic, Typeable)---- | See <https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html> for more information.-data ValueCountAggregation = FieldValueCount FieldName-                           | ScriptValueCount Script deriving (Eq, Read, Show, Generic, Typeable)---- | Single-bucket filter aggregations. See <https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html#search-aggregations-bucket-filter-aggregation> for more information.-data FilterAggregation = FilterAggregation { faFilter :: Filter-                                           , faAggs   :: Maybe Aggregations} deriving (Eq, Read, Show, Generic, Typeable)--mkTermsAggregation :: Text -> TermsAggregation-mkTermsAggregation t = TermsAggregation (Left t) Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing--mkTermsScriptAggregation :: Text -> TermsAggregation-mkTermsScriptAggregation t = TermsAggregation (Right t) Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing--mkDateHistogram :: FieldName -> Interval -> DateHistogramAggregation-mkDateHistogram t i = DateHistogramAggregation t i Nothing Nothing Nothing Nothing Nothing Nothing--instance ToJSON Version where-  toJSON Version {..} = object ["number" .= number-                               ,"build_hash" .= build_hash-                               ,"build_timestamp" .= build_timestamp-                               ,"build_snapshot" .= build_snapshot-                               ,"lucene_version" .= lucene_version]--instance FromJSON Version where-  parseJSON = withObject "Version" parse-    where parse o = Version-                    <$> o .: "number"-                    <*> o .: "build_hash"-                    <*> o .: "build_timestamp"-                    <*> o .: "build_snapshot"-                    <*> o .: "lucene_version"--instance ToJSON TermOrder where-  toJSON (TermOrder termSortField termSortOrder) = object [termSortField .= termSortOrder]--instance ToJSON TermInclusion where-  toJSON (TermInclusion x) = toJSON x-  toJSON (TermPattern pattern flags) = omitNulls [ "pattern" .= pattern,-                                                     "flags"   .= flags]--instance ToJSON CollectionMode where-  toJSON BreadthFirst = "breadth_first"-  toJSON DepthFirst   = "depth_first"--instance ToJSON ExecutionHint where-  toJSON Ordinals                     = "ordinals"-  toJSON GlobalOrdinals               = "global_ordinals"-  toJSON GlobalOrdinalsHash           = "global_ordinals_hash"-  toJSON GlobalOrdinalsLowCardinality = "global_ordinals_low_cardinality"-  toJSON Map                          = "map"--instance ToJSON Interval where-  toJSON Year = "year"-  toJSON Quarter = "quarter"-  toJSON Month = "month"-  toJSON Week = "week"-  toJSON Day = "day"-  toJSON Hour = "hour"-  toJSON Minute = "minute"-  toJSON Second = "second"-  toJSON (FractionalInterval fraction interval) = toJSON $ show fraction ++ show interval--instance Show TimeInterval where-  show Weeks    = "w"-  show Days     = "d"-  show Hours    = "h"-  show Minutes  = "m"-  show Seconds  = "s"--instance Read TimeInterval where-  readPrec = f =<< TR.get-    where-      f 'w' = return Weeks-      f 'd' = return Days-      f 'h' = return Hours-      f 'm' = return Minutes-      f 's' = return Seconds-      f  _  = fail "TimeInterval expected one of w, d, h, m, s"--instance ToJSON Aggregation where-  toJSON (TermsAgg (TermsAggregation term include exclude order minDocCount size shardSize collectMode executionHint termAggs)) =-    omitNulls ["terms" .= omitNulls [ toJSON' term,-                                      "include"        .= include,-                                      "exclude"        .= exclude,-                                      "order"          .= order,-                                      "min_doc_count"  .= minDocCount,-                                      "size"           .= size,-                                      "shard_size"     .= shardSize,-                                      "collect_mode"   .= collectMode,-                                      "execution_hint" .= executionHint-                                    ],-               "aggs"  .= termAggs ]-    where-      toJSON' x = case x of { Left y -> "field" .= y;  Right y -> "script" .= y }--  toJSON (DateHistogramAgg (DateHistogramAggregation field interval format preZone postZone preOffset postOffset dateHistoAggs)) =-    omitNulls ["date_histogram" .= omitNulls [ "field"       .= field,-                                               "interval"    .= interval,-                                               "format"      .= format,-                                               "pre_zone"    .= preZone,-                                               "post_zone"   .= postZone,-                                               "pre_offset"  .= preOffset,-                                               "post_offset" .= postOffset-                                             ],-               "aggs"           .= dateHistoAggs ]-  toJSON (ValueCountAgg a) = object ["value_count" .= v]-    where v = case a of-                (FieldValueCount (FieldName n)) -> object ["field" .= n]-                (ScriptValueCount (Script s))   -> object ["script" .= s]-  toJSON (FilterAgg (FilterAggregation filt ags)) =-    omitNulls [ "filter" .= filt-              , "aggs" .= ags]-  toJSON (DateRangeAgg a) = object [ "date_range" .= a-                                   ]-  toJSON (MissingAgg (MissingAggregation{..})) =-    object ["missing" .= object ["field" .= maField]]--instance ToJSON DateRangeAggregation where-  toJSON DateRangeAggregation {..} =-    omitNulls [ "field" .= draField-              , "format" .= draFormat-              , "ranges" .= toList draRanges-              ]--instance ToJSON DateRangeAggRange where-  toJSON (DateRangeFrom e) = object [ "from" .= e ]-  toJSON (DateRangeTo e) = object [ "to" .= e ]-  toJSON (DateRangeFromAndTo f t) = object [ "from" .= f, "to" .= t ]--instance ToJSON DateMathExpr where-  toJSON (DateMathExpr a mods) = String (fmtA a <> mconcat (fmtMod <$> mods))-    where fmtA DMNow = "now"-          fmtA (DMDate date) = case toGregorian date of-                                 (y,m,d) -> showText y <> "-" <>-                                            showText m <> "-" <>-                                            showText d <> "||"-          fmtMod (AddTime n u) = "+" <> showText n <> fmtU u-          fmtMod (SubtractTime n u) = "-" <> showText n <> fmtU u-          fmtMod (RoundDownTo u) = "/" <> fmtU u-          fmtU DMYear = "y"-          fmtU DMMonth = "M"-          fmtU DMWeek = "w"-          fmtU DMDay = "d"-          fmtU DMHour = "h"-          fmtU DMMinute = "m"-          fmtU DMSecond = "s"---type AggregationResults = M.Map Text Value--class BucketAggregation a where-  key :: a -> BucketValue-  docCount :: a -> Int-  aggs :: a -> Maybe AggregationResults---data Bucket a = Bucket { buckets :: [a]} deriving (Read, Show)--data BucketValue = TextValue Text-                 | ScientificValue Scientific-                 | BoolValue Bool deriving (Read, Show)--data MissingResult = MissingResult { missingDocCount :: Int } deriving (Show)--data TermsResult = TermsResult { termKey       :: BucketValue-                               , termsDocCount :: Int-                               , termsAggs     :: Maybe AggregationResults } deriving (Read, Show)--data DateHistogramResult = DateHistogramResult { dateKey           :: Int-                                               , dateKeyStr        :: Maybe Text-                                               , dateDocCount      :: Int-                                               , dateHistogramAggs :: Maybe AggregationResults } deriving (Read, Show)--data DateRangeResult = DateRangeResult { dateRangeKey          :: Text-                                       , dateRangeFrom         :: Maybe UTCTime-                                       , dateRangeFromAsString :: Maybe Text-                                       , dateRangeTo           :: Maybe UTCTime-                                       , dateRangeToAsString   :: Maybe Text-                                       , dateRangeDocCount     :: Int-                                       , dateRangeAggs         :: Maybe AggregationResults } deriving (Read, Show, Eq, Generic, Typeable)--toTerms :: Text -> AggregationResults ->  Maybe (Bucket TermsResult)-toTerms = toAggResult--toDateHistogram :: Text -> AggregationResults -> Maybe (Bucket DateHistogramResult)-toDateHistogram = toAggResult--toMissing :: Text -> AggregationResults -> Maybe MissingResult-toMissing = toAggResult--toAggResult :: (FromJSON a) => Text -> AggregationResults -> Maybe a-toAggResult t a = M.lookup t a >>= deserialize-  where deserialize = parseMaybe parseJSON--instance BucketAggregation TermsResult where-  key = termKey-  docCount = termsDocCount-  aggs = termsAggs--instance BucketAggregation DateHistogramResult where-  key = TextValue . showText . dateKey-  docCount = dateDocCount-  aggs = dateHistogramAggs--instance BucketAggregation DateRangeResult where-  key = TextValue . dateRangeKey-  docCount = dateRangeDocCount-  aggs = dateRangeAggs--instance (FromJSON a, BucketAggregation a) => FromJSON (Bucket a) where-  parseJSON (Object v) = Bucket <$>-                         v .: "buckets"-  parseJSON _ = mempty--instance FromJSON BucketValue where-  parseJSON (String t) = return $ TextValue t-  parseJSON (Number s) = return $ ScientificValue s-  parseJSON (Bool b) = return $ BoolValue b-  parseJSON _ = mempty--instance FromJSON MissingResult where-  parseJSON = withObject "MissingResult" parse-    where parse v = MissingResult <$> v .: "doc_count"--instance FromJSON TermsResult where-  parseJSON (Object v) = TermsResult <$>-                         v .:   "key"       <*>-                         v .:   "doc_count" <*>-                         v .:?  "aggregations"-  parseJSON _ = mempty--instance FromJSON DateHistogramResult where-  parseJSON (Object v) = DateHistogramResult   <$>-                         v .:  "key"           <*>-                         v .:? "key_as_string" <*>-                         v .:  "doc_count"     <*>-                         v .:? "aggregations"-  parseJSON _ = mempty--instance FromJSON DateRangeResult where-  parseJSON = withObject "DateRangeResult" parse-    where parse v = DateRangeResult                 <$>-                    v .:  "key"                     <*>-                    (fmap posixMS <$> v .:? "from") <*>-                    v .:? "from_as_string"          <*>-                    (fmap posixMS <$> v .:? "to")   <*>-                    v .:? "to_as_string"            <*>-                    v .:  "doc_count"               <*>-                    v .:? "aggregations"--instance FromJSON POSIXMS where-  parseJSON = withScientific "POSIXMS" (return . parse)-    where parse n = let n' = truncate n :: Integer-                    in POSIXMS (posixSecondsToUTCTime (fromInteger (n' `div` 1000)))--instance Monoid Filter where-  mempty = IdentityFilter-  mappend a b = AndFilter [a, b] defaultCache--instance Seminearring Filter where-  a <||> b = OrFilter [a, b] defaultCache--instance ToJSON Filter where-  toJSON (AndFilter filters cache) =-    object ["and" .=-            object [ "filters" .= fmap toJSON filters-                   , "_cache"  .= cache]]--  toJSON (OrFilter filters cache) =-    object ["or" .=-            object [ "filters" .= fmap toJSON filters-                   , "_cache"  .= cache]]--  toJSON (NotFilter notFilter cache) =-    object ["not" .=-            object ["filter"  .= notFilter-                   , "_cache" .= cache]]--  toJSON (IdentityFilter) =-    object ["match_all" .= object []]--  toJSON (TermFilter (Term termFilterField termFilterValue) cache) =-    object ["term" .= object base]-    where base = [termFilterField .= termFilterValue,-                  "_cache"        .= cache]--  toJSON (ExistsFilter (FieldName fieldName)) =-    object ["exists"  .= object-            ["field"  .= fieldName]]--  toJSON (BoolFilter boolMatch) =-    object ["bool"    .= boolMatch]--  toJSON (GeoBoundingBoxFilter bbConstraint) =-    object ["geo_bounding_box" .= bbConstraint]--  toJSON (GeoDistanceFilter (GeoPoint (FieldName distanceGeoField) geoDistLatLon)-          distance distanceType optimizeBbox cache) =-    object ["geo_distance" .=-            object ["distance" .= distance-                   , "distance_type" .= distanceType-                   , "optimize_bbox" .= optimizeBbox-                   , distanceGeoField .= geoDistLatLon-                   , "_cache" .= cache]]--  toJSON (GeoDistanceRangeFilter (GeoPoint (FieldName gddrField) drLatLon)-          (DistanceRange geoDistRangeDistFrom drDistanceTo)) =-    object ["geo_distance_range" .=-            object ["from" .= geoDistRangeDistFrom-                   , "to"  .= drDistanceTo-                   , gddrField .= drLatLon]]--  toJSON (GeoPolygonFilter (FieldName geoPolygonFilterField) latLons) =-    object ["geo_polygon" .=-            object [geoPolygonFilterField .=-                    object ["points" .= fmap toJSON latLons]]]--  toJSON (IdsFilter (MappingName mappingName) values) =-    object ["ids" .=-            object ["type" .= mappingName-                   , "values" .= fmap unpackId values]]--  toJSON (LimitFilter limit) =-    object ["limit" .= object ["value" .= limit]]--  toJSON (MissingFilter (FieldName fieldName) (Existence existence) (NullValue nullValue)) =-    object ["missing" .=-            object ["field"       .= fieldName-                   , "existence"  .= existence-                   , "null_value" .= nullValue]]--  toJSON (PrefixFilter (FieldName fieldName) fieldValue cache) =-    object ["prefix" .=-            object [fieldName .= fieldValue-                   , "_cache" .= cache]]--  toJSON (QueryFilter query False) =-    object ["query" .= toJSON query ]-  toJSON (QueryFilter query True) =-    object ["fquery" .=-            object [ "query"  .= toJSON query-                   , "_cache" .= True ]]--  toJSON (RangeFilter (FieldName fieldName) rangeValue rangeExecution cache) =-    object ["range" .=-            object [ fieldName .= object (rangeValueToPair rangeValue)-                   , "execution" .= rangeExecution-                   , "_cache" .= cache]]--  toJSON (RegexpFilter (FieldName fieldName)-          (Regexp regexText) flags (CacheName cacheName) cache (CacheKey cacheKey)) =-    object ["regexp" .=-            object [fieldName .=-                    object ["value"  .= regexText-                           , "flags" .= flags]-                   , "_name"      .= cacheName-                   , "_cache"     .= cache-                   , "_cache_key" .= cacheKey]]--instance FromJSON Filter where-  parseJSON = withObject "Filter" parse-    where parse o = andFilter `taggedWith` "and"-                <|> orFilter `taggedWith` "or"-                <|> notFilter `taggedWith` "not"-                <|> identityFilter `taggedWith` "match_all"-                <|> boolFilter `taggedWith` "bool"-                <|> existsFilter `taggedWith` "exists"-                <|> geoBoundingBoxFilter `taggedWith` "geo_bounding_box"-                <|> geoDistanceFilter `taggedWith` "geo_distance"-                <|> geoDistanceRangeFilter `taggedWith` "geo_distance_range"-                <|> geoPolygonFilter `taggedWith` "geo_polygon"-                <|> idsFilter `taggedWith` "ids"-                <|> limitFilter `taggedWith` "limit"-                <|> missingFilter `taggedWith` "missing"-                <|> prefixFilter `taggedWith` "prefix"-                <|> queryFilter `taggedWith` "query"-                <|> fqueryFilter `taggedWith` "fquery"-                <|> rangeFilter `taggedWith` "range"-                <|> regexpFilter `taggedWith` "regexp"-                <|> termFilter `taggedWith` "term"-            where taggedWith parser k = parser =<< o .: k-          andFilter o = AndFilter <$> o .: "filters"-                                  <*> o .:? "_cache" .!= defaultCache-          orFilter o = OrFilter <$> o .: "filters"-                                <*> o .:? "_cache" .!= defaultCache-          notFilter o = NotFilter <$> o .: "filter"-                                  <*> o .: "_cache" .!= defaultCache-          identityFilter :: Object -> Parser Filter-          identityFilter m-            | HM.null m = pure IdentityFilter-            | otherwise = fail ("Identityfilter expected empty object but got " <> show m)-          boolFilter = pure . BoolFilter-          existsFilter o = ExistsFilter <$> o .: "field"-          geoBoundingBoxFilter = pure . GeoBoundingBoxFilter-          geoDistanceFilter o = do-            case HM.toList (deleteSeveral ["distance", "distance_type", "optimize_bbox", "_cache"] o) of-              [(fn, v)] -> do-                gp <- GeoPoint (FieldName fn) <$> parseJSON v-                GeoDistanceFilter gp <$> o .: "distance"-                                     <*> o .: "distance_type"-                                     <*> o .: "optimize_bbox"-                                     <*> o .:? "_cache" .!= defaultCache-              _ -> fail "Could not find GeoDistanceFilter field name"-          geoDistanceRangeFilter o = do-            case HM.toList (deleteSeveral ["from", "to"] o) of-              [(fn, v)] -> do-                gp <- GeoPoint (FieldName fn) <$> parseJSON v-                rng <- DistanceRange <$> o .: "from" <*> o .: "to"-                return (GeoDistanceRangeFilter gp rng)-              _ -> fail "Could not find GeoDistanceRangeFilter field name"-          geoPolygonFilter = fieldTagged $ \fn o -> GeoPolygonFilter fn <$> o .: "points"-          idsFilter o = IdsFilter <$> o .: "type"-                                  <*> o .: "values"-          limitFilter o = LimitFilter <$> o .: "value"-          missingFilter o = MissingFilter <$> o .: "field"-                                          <*> o .: "existence"-                                          <*> o .: "null_value"-          prefixFilter o = case HM.toList (HM.delete "_cache" o) of-                             [(fn, String v)] -> PrefixFilter (FieldName fn) v <$> o .:? "_cache" .!= defaultCache-                             _ -> fail "Could not parse PrefixFilter"--          queryFilter q = pure (QueryFilter q False)-          fqueryFilter o = QueryFilter <$> o .: "query" <*> pure True-          rangeFilter o = case HM.toList (deleteSeveral ["execution", "_cache"] o) of-                            [(fn, v)] -> RangeFilter (FieldName fn)-                                         <$> parseJSON v-                                         <*> o .: "execution"-                                         <*> o .:? "_cache" .!= defaultCache-                            _ -> fail "Could not find field name for RangeFilter"-          regexpFilter o = case HM.toList (deleteSeveral ["_name", "_cache", "_cache_key"] o) of-                              [(fn, Object o')] -> RegexpFilter (FieldName fn)-                                                   <$> o' .: "value"-                                                   <*> o' .: "flags"-                                                   <*> o .: "_name"-                                                   <*> o .:? "_cache" .!= defaultCache-                                                   <*> o .: "_cache_key"-                              _ -> fail "Could not find field name for RegexpFilter"-          termFilter o = case HM.toList (HM.delete "_cache" o) of-                         [(termField, String termVal)] -> TermFilter (Term termField termVal)-                                                          <$> o .:? "_cache" .!= defaultCache-                         _ -> fail "Could not find term field for TermFilter"--fieldTagged :: Monad m => (FieldName -> Object -> m a) -> Object -> m a-fieldTagged f o = case HM.toList o of-                    [(k, Object o')] -> f (FieldName k) o'-                    _ -> fail "Expected object with 1 field-named key"--instance ToJSON GeoPoint where-  toJSON (GeoPoint (FieldName geoPointField) geoPointLatLon) =-    object [ geoPointField  .= geoPointLatLon ]---instance ToJSON Query where-  toJSON (TermQuery (Term termQueryField termQueryValue) boost) =-    object [ "term" .=-             object [termQueryField .= object merged]]-    where-      base = [ "value" .= termQueryValue ]-      boosted = maybe [] (return . ("boost" .=)) boost-      merged = mappend base boosted--  toJSON (TermsQuery fieldName terms) =-    object [ "terms" .= object conjoined ]-    where conjoined = [fieldName .= terms]--  toJSON (IdsQuery idsQueryMappingName docIds) =-    object [ "ids" .= object conjoined ]-    where conjoined = [ "type"   .= idsQueryMappingName-                      , "values" .= fmap toJSON docIds ]--  toJSON (QueryQueryStringQuery qQueryStringQuery) =-    object [ "query_string" .= qQueryStringQuery ]--  toJSON (QueryMatchQuery matchQuery) =-    object [ "match" .= matchQuery ]--  toJSON (QueryMultiMatchQuery multiMatchQuery) =-      toJSON multiMatchQuery--  toJSON (QueryBoolQuery boolQuery) =-    object [ "bool" .= boolQuery ]--  toJSON (QueryBoostingQuery boostingQuery) =-    object [ "boosting" .= boostingQuery ]--  toJSON (QueryCommonTermsQuery commonTermsQuery) =-    object [ "common" .= commonTermsQuery ]--  toJSON (ConstantScoreFilter csFilter boost) =-    object ["constant_score" .= object ["filter" .= csFilter-                                       , "boost" .= boost]]--  toJSON (ConstantScoreQuery query boost) =-    object ["constant_score" .= object ["query" .= query-                                       , "boost" .= boost]]--  toJSON (QueryDisMaxQuery disMaxQuery) =-    object [ "dis_max" .= disMaxQuery ]--  toJSON (QueryFilteredQuery qFilteredQuery) =-    object [ "filtered" .= qFilteredQuery ]--  toJSON (QueryFuzzyLikeThisQuery fuzzyQuery) =-    object [ "fuzzy_like_this" .= fuzzyQuery ]--  toJSON (QueryFuzzyLikeFieldQuery fuzzyFieldQuery) =-    object [ "fuzzy_like_this_field" .= fuzzyFieldQuery ]--  toJSON (QueryFuzzyQuery fuzzyQuery) =-    object [ "fuzzy" .= fuzzyQuery ]--  toJSON (QueryHasChildQuery childQuery) =-    object [ "has_child" .= childQuery ]--  toJSON (QueryHasParentQuery parentQuery) =-    object [ "has_parent" .= parentQuery ]--  toJSON (QueryIndicesQuery qIndicesQuery) =-    object [ "indices" .= qIndicesQuery ]--  toJSON (MatchAllQuery boost) =-    object [ "match_all" .= omitNulls [ "boost" .= boost ] ]--  toJSON (QueryMoreLikeThisQuery query) =-    object [ "more_like_this" .= query ]--  toJSON (QueryMoreLikeThisFieldQuery query) =-    object [ "more_like_this_field" .= query ]--  toJSON (QueryNestedQuery query) =-    object [ "nested" .= query ]--  toJSON (QueryPrefixQuery query) =-    object [ "prefix" .= query ]--  toJSON (QueryRangeQuery query) =-    object [ "range"  .= query ]--  toJSON (QueryRegexpQuery query) =-    object [ "regexp" .= query ]--  toJSON (QuerySimpleQueryStringQuery query) =-    object [ "simple_query_string" .= query ]--instance FromJSON Query where-  parseJSON v = withObject "Query" parse v-    where parse o = termQuery `taggedWith` "term"-                <|> termsQuery `taggedWith` "terms"-                <|> idsQuery `taggedWith` "ids"-                <|> queryQueryStringQuery `taggedWith` "query_string"-                <|> queryMatchQuery `taggedWith` "match"-                <|> queryMultiMatchQuery-                <|> queryBoolQuery `taggedWith` "bool"-                <|> queryBoostingQuery `taggedWith` "boosting"-                <|> queryCommonTermsQuery `taggedWith` "common"-                <|> constantScoreFilter `taggedWith` "constant_score"-                <|> constantScoreQuery `taggedWith` "constant_score"-                <|> queryDisMaxQuery `taggedWith` "dis_max"-                <|> queryFilteredQuery `taggedWith` "filtered"-                <|> queryFuzzyLikeThisQuery `taggedWith` "fuzzy_like_this"-                <|> queryFuzzyLikeFieldQuery `taggedWith` "fuzzy_like_this_field"-                <|> queryFuzzyQuery `taggedWith` "fuzzy"-                <|> queryHasChildQuery `taggedWith` "has_child"-                <|> queryHasParentQuery `taggedWith` "has_parent"-                <|> queryIndicesQuery `taggedWith` "indices"-                <|> matchAllQuery `taggedWith` "match_all"-                <|> queryMoreLikeThisQuery `taggedWith` "more_like_this"-                <|> queryMoreLikeThisFieldQuery `taggedWith` "more_like_this_field"-                <|> queryNestedQuery `taggedWith` "nested"-                <|> queryPrefixQuery `taggedWith` "prefix"-                <|> queryRangeQuery `taggedWith` "range"-                <|> queryRegexpQuery `taggedWith` "regexp"-                <|> querySimpleQueryStringQuery `taggedWith` "simple_query_string"-            where taggedWith parser k = parser =<< o .: k-          termQuery = fieldTagged $ \(FieldName fn) o ->-                        TermQuery <$> (Term fn <$> o .: "value") <*> o .:? "boost"-          termsQuery o = case HM.toList o of-                           [(fn, vs)] -> do vals <- parseJSON vs-                                            case vals of-                                              x:xs -> return (TermsQuery fn (x :| xs))-                                              _ -> fail "Expected non empty list of values"-                           _ -> fail "Expected object with 1 field-named key"-          idsQuery o = IdsQuery <$> o .: "type"-                                <*> o .: "values"-          queryQueryStringQuery = pure . QueryQueryStringQuery-          queryMatchQuery = pure . QueryMatchQuery-          queryMultiMatchQuery = QueryMultiMatchQuery <$> parseJSON v-          queryBoolQuery = pure . QueryBoolQuery-          queryBoostingQuery = pure . QueryBoostingQuery-          queryCommonTermsQuery = pure . QueryCommonTermsQuery-          constantScoreFilter o = case HM.lookup "filter" o of-            Just x -> ConstantScoreFilter <$> parseJSON x-                                          <*> o .: "boost"-            _ -> fail "Does not appear to be a ConstantScoreFilter"-          constantScoreQuery o = case HM.lookup "query" o of-            Just x -> ConstantScoreQuery <$> parseJSON x-                                         <*> o .: "boost"-            _ -> fail "Does not appear to be a ConstantScoreQuery"-          queryDisMaxQuery = pure . QueryDisMaxQuery-          queryFilteredQuery = pure . QueryFilteredQuery-          queryFuzzyLikeThisQuery = pure . QueryFuzzyLikeThisQuery-          queryFuzzyLikeFieldQuery = pure . QueryFuzzyLikeFieldQuery-          queryFuzzyQuery = pure . QueryFuzzyQuery-          queryHasChildQuery = pure . QueryHasChildQuery-          queryHasParentQuery = pure . QueryHasParentQuery-          queryIndicesQuery = pure . QueryIndicesQuery-          matchAllQuery o = MatchAllQuery <$> o .:? "boost"-          queryMoreLikeThisQuery = pure . QueryMoreLikeThisQuery-          queryMoreLikeThisFieldQuery = pure . QueryMoreLikeThisFieldQuery-          queryNestedQuery = pure . QueryNestedQuery-          queryPrefixQuery = pure . QueryPrefixQuery-          queryRangeQuery = pure . QueryRangeQuery-          queryRegexpQuery = pure . QueryRegexpQuery-          querySimpleQueryStringQuery = pure . QuerySimpleQueryStringQuery---omitNulls :: [(Text, Value)] -> Value-omitNulls = object . filter notNull where-  notNull (_, Null)      = False-  notNull (_, Array a) = (not . V.null) a-  notNull _              = True---instance ToJSON SimpleQueryStringQuery where-  toJSON SimpleQueryStringQuery {..} =-    omitNulls (base ++ maybeAdd)-    where base = [ "query" .= simpleQueryStringQuery ]-          maybeAdd = [ "fields" .= simpleQueryStringField-                     , "default_operator" .= simpleQueryStringOperator-                     , "analyzer" .= simpleQueryStringAnalyzer-                     , "flags" .= simpleQueryStringFlags-                     , "lowercase_expanded_terms" .= simpleQueryStringLowercaseExpanded-                     , "locale" .= simpleQueryStringLocale ]--instance FromJSON SimpleQueryStringQuery where-  parseJSON = withObject "SimpleQueryStringQuery" parse-    where parse o = SimpleQueryStringQuery <$> o .: "query"-                                           <*> o .:? "fields"-                                           <*> o .:? "default_operator"-                                           <*> o .:? "analyzer"-                                           <*> (parseFlags <$> o .:? "flags")-                                           <*> o .:? "lowercase_expanded_terms"-                                           <*> o .:? "locale"-          parseFlags (Just (x:xs)) = Just (x :| xs)-          parseFlags _             = Nothing--instance ToJSON FieldOrFields where-  toJSON (FofField fieldName) =-    toJSON fieldName-  toJSON (FofFields fieldNames) =-    toJSON fieldNames--instance FromJSON FieldOrFields where-  parseJSON v = FofField  <$> parseJSON v-            <|> FofFields <$> (parseNEJSON =<< parseJSON v)--instance ToJSON SimpleQueryFlag where-  toJSON SimpleQueryAll        = "ALL"-  toJSON SimpleQueryNone       = "NONE"-  toJSON SimpleQueryAnd        = "AND"-  toJSON SimpleQueryOr         = "OR"-  toJSON SimpleQueryPrefix     = "PREFIX"-  toJSON SimpleQueryPhrase     = "PHRASE"-  toJSON SimpleQueryPrecedence = "PRECEDENCE"-  toJSON SimpleQueryEscape     = "ESCAPE"-  toJSON SimpleQueryWhitespace = "WHITESPACE"-  toJSON SimpleQueryFuzzy      = "FUZZY"-  toJSON SimpleQueryNear       = "NEAR"-  toJSON SimpleQuerySlop       = "SLOP"--instance FromJSON SimpleQueryFlag where-  parseJSON = withText "SimpleQueryFlag" parse-    where parse "ALL"        = pure SimpleQueryAll-          parse "NONE"       = pure SimpleQueryNone-          parse "AND"        = pure SimpleQueryAnd-          parse "OR"         = pure SimpleQueryOr-          parse "PREFIX"     = pure SimpleQueryPrefix-          parse "PHRASE"     = pure SimpleQueryPhrase-          parse "PRECEDENCE" = pure SimpleQueryPrecedence-          parse "ESCAPE"     = pure SimpleQueryEscape-          parse "WHITESPACE" = pure SimpleQueryWhitespace-          parse "FUZZY"      = pure SimpleQueryFuzzy-          parse "NEAR"       = pure SimpleQueryNear-          parse "SLOP"       = pure SimpleQuerySlop-          parse f            = fail ("Unexpected SimpleQueryFlag: " <> show f)--instance ToJSON RegexpQuery where-  toJSON (RegexpQuery (FieldName rqQueryField)-          (Regexp regexpQueryQuery) rqQueryFlags-          rqQueryBoost) =-   object [ rqQueryField .= omitNulls base ]-   where base = [ "value" .= regexpQueryQuery-                , "flags" .= rqQueryFlags-                , "boost" .= rqQueryBoost ]--instance FromJSON RegexpQuery where-  parseJSON = withObject "RegexpQuery" parse-    where parse = fieldTagged $ \fn o ->-                    RegexpQuery fn-                    <$> o .: "value"-                    <*> o .: "flags"-                    <*> o .:? "boost"--instance ToJSON QueryStringQuery where-  toJSON (QueryStringQuery qsQueryString-          qsDefaultField qsOperator-          qsAnalyzer qsAllowWildcard-          qsLowercaseExpanded  qsEnablePositionIncrements-          qsFuzzyMaxExpansions qsFuzziness-          qsFuzzyPrefixLength qsPhraseSlop-          qsBoost qsAnalyzeWildcard-          qsGeneratePhraseQueries qsMinimumShouldMatch-          qsLenient qsLocale) =-    omitNulls base-    where-      base = [ "query" .= qsQueryString-             , "default_field" .= qsDefaultField-             , "default_operator" .= qsOperator-             , "analyzer" .= qsAnalyzer-             , "allow_leading_wildcard" .= qsAllowWildcard-             , "lowercase_expanded_terms" .= qsLowercaseExpanded-             , "enable_position_increments" .= qsEnablePositionIncrements-             , "fuzzy_max_expansions" .= qsFuzzyMaxExpansions-             , "fuzziness" .= qsFuzziness-             , "fuzzy_prefix_length" .= qsFuzzyPrefixLength-             , "phrase_slop" .= qsPhraseSlop-             , "boost" .= qsBoost-             , "analyze_wildcard" .= qsAnalyzeWildcard-             , "auto_generate_phrase_queries" .= qsGeneratePhraseQueries-             , "minimum_should_match" .= qsMinimumShouldMatch-             , "lenient" .= qsLenient-             , "locale" .= qsLocale ]--instance FromJSON QueryStringQuery where-  parseJSON = withObject "QueryStringQuery" parse-    where parse o = QueryStringQuery-                    <$> o .: "query"-                    <*> o .:? "default_field"-                    <*> o .:? "default_operator"-                    <*> o .:? "analyzer"-                    <*> o .:? "allow_leading_wildcard"-                    <*> o .:? "lowercase_expanded_terms"-                    <*> o .:? "enable_position_increments"-                    <*> o .:? "fuzzy_max_expansions"-                    <*> o .:? "fuzziness"-                    <*> o .:? "fuzzy_prefix_length"-                    <*> o .:? "phrase_slop"-                    <*> o .:? "boost"-                    <*> o .:? "analyze_wildcard"-                    <*> o .:? "auto_generate_phrase_queries"-                    <*> o .:? "minimum_should_match"-                    <*> o .:? "lenient"-                    <*> o .:? "locale"--instance ToJSON RangeQuery where-  toJSON (RangeQuery (FieldName fieldName) range boost) =-    object [ fieldName .= object conjoined ]-    where conjoined = [ "boost" .= boost ] ++ (rangeValueToPair range)--instance FromJSON RangeQuery where-  parseJSON = withObject "RangeQuery" parse-    where parse = fieldTagged $ \fn o ->-                    RangeQuery fn-                    <$> parseJSON (Object o)-                    <*> o .: "boost"--instance FromJSON RangeValue where-  parseJSON = withObject "RangeValue" parse-    where parse o = parseDate o-                <|> parseDouble o-          parseDate o = do lt <- o .:? "lt"-                           lte <- o .:? "lte"-                           gt <- o .:? "gt"-                           gte <- o .:? "gte"-                           case (lt, lte, gt, gte) of-                             (Just a, _, Just b, _) -> return (RangeDateGtLt (GreaterThanD b) (LessThanD a))-                             (Just a, _, _, Just b)-> return (RangeDateGteLt (GreaterThanEqD b) (LessThanD a))-                             (_, Just a, Just b, _)-> return (RangeDateGtLte (GreaterThanD b) (LessThanEqD a))-                             (_, Just a, _, Just b)-> return (RangeDateGteLte (GreaterThanEqD b) (LessThanEqD a))-                             (_, _, Just a, _)-> return (RangeDateGt (GreaterThanD a))-                             (Just a, _, _, _)-> return (RangeDateLt (LessThanD a))-                             (_, _, _, Just a)-> return (RangeDateGte (GreaterThanEqD a))-                             (_, Just a, _, _)-> return (RangeDateLte (LessThanEqD a))-                             (Nothing, Nothing, Nothing, Nothing) -> mzero-          parseDouble o = do lt <- o .:? "lt"-                             lte <- o .:? "lte"-                             gt <- o .:? "gt"-                             gte <- o .:? "gte"-                             case (lt, lte, gt, gte) of-                               (Just a, _, Just b, _) -> return (RangeDoubleGtLt (GreaterThan b) (LessThan a))-                               (Just a, _, _, Just b)-> return (RangeDoubleGteLt (GreaterThanEq b) (LessThan a))-                               (_, Just a, Just b, _)-> return (RangeDoubleGtLte (GreaterThan b) (LessThanEq a))-                               (_, Just a, _, Just b)-> return (RangeDoubleGteLte (GreaterThanEq b) (LessThanEq a))-                               (_, _, Just a, _)-> return (RangeDoubleGt (GreaterThan a))-                               (Just a, _, _, _)-> return (RangeDoubleLt (LessThan a))-                               (_, _, _, Just a)-> return (RangeDoubleGte (GreaterThanEq a))-                               (_, Just a, _, _)-> return (RangeDoubleLte (LessThanEq a))-                               (Nothing, Nothing, Nothing, Nothing) -> mzero--instance ToJSON PrefixQuery where-  toJSON (PrefixQuery (FieldName fieldName) queryValue boost) =-    object [ fieldName .= omitNulls base ]-    where base = [ "value" .= queryValue-                 , "boost" .= boost ]--instance FromJSON PrefixQuery where-  parseJSON = withObject "PrefixQuery" parse-    where parse = fieldTagged $ \fn o ->-                    PrefixQuery fn-                    <$> o .: "value"-                    <*> o .:? "boost"--instance ToJSON NestedQuery where-  toJSON (NestedQuery nqPath nqScoreType nqQuery) =-    object [ "path"       .= nqPath-           , "score_mode" .= nqScoreType-           , "query"      .= nqQuery ]--instance FromJSON NestedQuery where-  parseJSON = withObject "NestedQuery" parse-    where parse o = NestedQuery-                    <$> o .: "path"-                    <*> o .: "score_mode"-                    <*> o .: "query"--instance ToJSON MoreLikeThisFieldQuery where-  toJSON (MoreLikeThisFieldQuery text (FieldName fieldName)-          percent mtf mqt stopwords mindf maxdf-          minwl maxwl boostTerms boost analyzer) =-    object [ fieldName .= omitNulls base ]-    where base = [ "like_text" .= text-                 , "percent_terms_to_match" .= percent-                 , "min_term_freq" .= mtf-                 , "max_query_terms" .= mqt-                 , "stop_words" .= stopwords-                 , "min_doc_freq" .= mindf-                 , "max_doc_freq" .= maxdf-                 , "min_word_length" .= minwl-                 , "max_word_length" .= maxwl-                 , "boost_terms" .= boostTerms-                 , "boost" .= boost-                 , "analyzer" .= analyzer ]--instance FromJSON MoreLikeThisFieldQuery where-  parseJSON = withObject "MoreLikeThisFieldQuery" parse-    where parse = fieldTagged $ \fn o ->-                    MoreLikeThisFieldQuery-                    <$> o .: "like_text"-                    <*> pure fn-                    <*> o .:? "percent_terms_to_match"-                    <*> o .:? "min_term_freq"-                    <*> o .:? "max_query_terms"-                    -- <*> (optionalNE =<< o .:? "stop_words")-                    <*> o .:? "stop_words"-                    <*> o .:? "min_doc_freq"-                    <*> o .:? "max_doc_freq"-                    <*> o .:? "min_word_length"-                    <*> o .:? "max_word_length"-                    <*> o .:? "boost_terms"-                    <*> o .:? "boost"-                    <*> o .:? "analyzer"-          -- optionalNE = maybe (pure Nothing) (fmap Just . parseNEJSON)--instance ToJSON MoreLikeThisQuery where-  toJSON (MoreLikeThisQuery text fields percent-          mtf mqt stopwords mindf maxdf-          minwl maxwl boostTerms boost analyzer) =-    omitNulls base-    where base = [ "like_text" .= text-                 , "fields" .= fields-                 , "percent_terms_to_match" .= percent-                 , "min_term_freq" .= mtf-                 , "max_query_terms" .= mqt-                 , "stop_words" .= stopwords-                 , "min_doc_freq" .= mindf-                 , "max_doc_freq" .= maxdf-                 , "min_word_length" .= minwl-                 , "max_word_length" .= maxwl-                 , "boost_terms" .= boostTerms-                 , "boost" .= boost-                 , "analyzer" .= analyzer ]--instance FromJSON MoreLikeThisQuery where-  parseJSON = withObject "MoreLikeThisQuery" parse-    where parse o = MoreLikeThisQuery-                    <$> o .: "like_text"-                    -- <*> (optionalNE =<< o .:? "fields")-                    <*> o .:? "fields"-                    <*> o .:? "percent_terms_to_match"-                    <*> o .:? "min_term_freq"-                    <*> o .:? "max_query_terms"-                    -- <*> (optionalNE =<< o .:? "stop_words")-                    <*> o .:? "stop_words"-                    <*> o .:? "min_doc_freq"-                    <*> o .:? "max_doc_freq"-                    <*> o .:? "min_word_length"-                    <*> o .:? "max_word_length"-                    <*> o .:? "boost_terms"-                    <*> o .:? "boost"-                    <*> o .:? "analyzer"-          -- optionalNE = maybe (pure Nothing) (fmap Just . parseNEJSON)--instance ToJSON IndicesQuery where-  toJSON (IndicesQuery indices query noMatch) =-    omitNulls [ "indices" .= indices-              , "no_match_query" .= noMatch-              , "query" .= query ]--instance FromJSON IndicesQuery where-  parseJSON = withObject "IndicesQuery" parse-    where parse o = IndicesQuery-                    <$> o .:? "indices" .!= []-                    <*> o .: "query"-                    <*> o .:? "no_match_query"--instance ToJSON HasParentQuery where-  toJSON (HasParentQuery queryType query scoreType) =-    omitNulls [ "parent_type" .= queryType-              , "score_type" .= scoreType-              , "query" .= query ]--instance FromJSON HasParentQuery where-  parseJSON = withObject "HasParentQuery" parse-    where parse o = HasParentQuery-                    <$> o .: "parent_type"-                    <*> o .: "query"-                    <*> o .:? "score_type"--instance ToJSON HasChildQuery where-  toJSON (HasChildQuery queryType query scoreType) =-    omitNulls [ "query" .= query-              , "score_type" .= scoreType-              , "type"  .= queryType ]--instance FromJSON HasChildQuery where-  parseJSON = withObject "HasChildQuery" parse-    where parse o = HasChildQuery-                    <$> o .: "type"-                    <*> o .: "query"-                    <*> o .:? "score_type"--instance ToJSON FuzzyQuery where-  toJSON (FuzzyQuery (FieldName fieldName) queryText-          prefixLength maxEx fuzziness boost) =-    object [ fieldName .= omitNulls base ]-    where base = [ "value"          .= queryText-                 , "fuzziness"      .= fuzziness-                 , "prefix_length"  .= prefixLength-                 , "boost" .= boost-                 , "max_expansions" .= maxEx ]--instance FromJSON FuzzyQuery where-  parseJSON = withObject "FuzzyQuery" parse-    where parse = fieldTagged $ \fn o ->-                    FuzzyQuery fn-                    <$> o .: "value"-                    <*> o .: "prefix_length"-                    <*> o .: "max_expansions"-                    <*> o .: "fuzziness"-                    <*> o .:? "boost"--instance ToJSON FuzzyLikeFieldQuery where-  toJSON (FuzzyLikeFieldQuery (FieldName fieldName)-          fieldText maxTerms ignoreFreq fuzziness prefixLength-          boost analyzer) =-    object [ fieldName .=-             omitNulls [ "like_text"       .= fieldText-                       , "max_query_terms" .= maxTerms-                       , "ignore_tf"       .= ignoreFreq-                       , "fuzziness"       .= fuzziness-                       , "prefix_length"   .= prefixLength-                       , "analyzer" .= analyzer-                       , "boost"           .= boost ]]--instance FromJSON FuzzyLikeFieldQuery where-  parseJSON = withObject "FuzzyLikeFieldQuery" parse-    where parse = fieldTagged $ \fn o ->-                    FuzzyLikeFieldQuery fn-                    <$> o .: "like_text"-                    <*> o .: "max_query_terms"-                    <*> o .: "ignore_tf"-                    <*> o .: "fuzziness"-                    <*> o .: "prefix_length"-                    <*> o .: "boost"-                    <*> o .:? "analyzer"--instance ToJSON FuzzyLikeThisQuery where-  toJSON (FuzzyLikeThisQuery fields text maxTerms-          ignoreFreq fuzziness prefixLength boost analyzer) =-    omitNulls base-    where base = [ "fields"          .= fields-                 , "like_text"       .= text-                 , "max_query_terms" .= maxTerms-                 , "ignore_tf"       .= ignoreFreq-                 , "fuzziness"       .= fuzziness-                 , "prefix_length"   .= prefixLength-                 , "analyzer"        .= analyzer-                 , "boost"           .= boost ]--instance FromJSON FuzzyLikeThisQuery where-  parseJSON = withObject "FuzzyLikeThisQuery" parse-    where parse o = FuzzyLikeThisQuery-                    <$> o .:? "fields" .!= []-                    <*> o .: "like_text"-                    <*> o .: "max_query_terms"-                    <*> o .: "ignore_tf"-                    <*> o .: "fuzziness"-                    <*> o .: "prefix_length"-                    <*> o .: "boost"-                    <*> o .:? "analyzer"--instance ToJSON FilteredQuery where-  toJSON (FilteredQuery query fFilter) =-    object [ "query"  .= query-           , "filter" .= fFilter ]--instance FromJSON FilteredQuery where-  parseJSON = withObject "FilteredQuery" parse-    where parse o = FilteredQuery-                    <$> o .: "query"-                    <*> o .: "filter"--instance ToJSON DisMaxQuery where-  toJSON (DisMaxQuery queries tiebreaker boost) =-    omitNulls base-    where base = [ "queries"     .= queries-                 , "boost"       .= boost-                 , "tie_breaker" .= tiebreaker ]--instance FromJSON DisMaxQuery where-  parseJSON = withObject "DisMaxQuery" parse-    where parse o = DisMaxQuery-                    <$> o .:? "queries" .!= []-                    <*> o .: "tie_breaker"-                    <*> o .:? "boost"--instance ToJSON CommonTermsQuery where-  toJSON (CommonTermsQuery (FieldName fieldName)-          (QueryString query) cf lfo hfo msm-          boost analyzer disableCoord) =-    object [fieldName .= omitNulls base ]-    where base = [ "query"              .= query-                 , "cutoff_frequency"   .= cf-                 , "low_freq_operator"  .= lfo-                 , "minimum_should_match" .= msm-                 , "boost" .= boost-                 , "analyzer" .= analyzer-                 , "disable_coord" .= disableCoord-                 , "high_freq_operator" .= hfo ]--instance FromJSON CommonTermsQuery where-  parseJSON = withObject "CommonTermsQuery" parse-    where parse = fieldTagged $ \fn o ->-                    CommonTermsQuery fn-                    <$> o .: "query"-                    <*> o .: "cutoff_frequency"-                    <*> o .: "low_freq_operator"-                    <*> o .: "high_freq_operator"-                    <*> o .:? "minimum_should_match"-                    <*> o .:? "boost"-                    <*> o .:? "analyzer"-                    <*> o .:? "disable_coord"--instance ToJSON CommonMinimumMatch where-  toJSON (CommonMinimumMatch mm) = toJSON mm-  toJSON (CommonMinimumMatchHighLow (MinimumMatchHighLow lowF highF)) =-    object [ "low_freq"  .= lowF-           , "high_freq" .= highF ]--instance FromJSON CommonMinimumMatch where-  parseJSON v = parseMinimum v-            <|> parseMinimumHighLow v-    where parseMinimum = fmap CommonMinimumMatch . parseJSON-          parseMinimumHighLow = fmap CommonMinimumMatchHighLow . withObject "CommonMinimumMatchHighLow" (\o ->-                                  MinimumMatchHighLow-                                  <$> o .: "low_freq"-                                  <*> o .: "high_freq")---instance ToJSON BoostingQuery where-  toJSON (BoostingQuery bqPositiveQuery bqNegativeQuery bqNegativeBoost) =-    object [ "positive"       .= bqPositiveQuery-           , "negative"       .= bqNegativeQuery-           , "negative_boost" .= bqNegativeBoost ]--instance FromJSON BoostingQuery where-  parseJSON = withObject "BoostingQuery" parse-    where parse o = BoostingQuery-                    <$> o .: "positive"-                    <*> o .: "negative"-                    <*> o .: "negative_boost"--instance ToJSON BoolQuery where-  toJSON (BoolQuery mustM notM shouldM bqMin boost disableCoord) =-    omitNulls base-    where base = [ "must" .= mustM-                 , "must_not" .= notM-                 , "should" .= shouldM-                 , "minimum_should_match" .= bqMin-                 , "boost" .= boost-                 , "disable_coord" .= disableCoord ]--instance FromJSON BoolQuery where-  parseJSON = withObject "BoolQuery" parse-    where parse o = BoolQuery-                    <$> o .:? "must" .!= []-                    <*> o .:? "must_not" .!= []-                    <*> o .:? "should" .!= []-                    <*> o .:? "minimum_should_match"-                    <*> o .:? "boost"-                    <*> o .:? "disable_coord"--instance ToJSON MatchQuery where-  toJSON (MatchQuery (FieldName fieldName)-          (QueryString mqQueryString) booleanOperator-          zeroTermsQuery cutoffFrequency matchQueryType-          analyzer maxExpansions lenient boost) =-    object [ fieldName .= omitNulls base ]-    where base = [ "query" .= mqQueryString-                 , "operator" .= booleanOperator-                 , "zero_terms_query" .= zeroTermsQuery-                 , "cutoff_frequency" .= cutoffFrequency-                 , "type" .= matchQueryType-                 , "analyzer" .= analyzer-                 , "max_expansions" .= maxExpansions-                 , "lenient" .= lenient-                 , "boost" .= boost ]--instance FromJSON MatchQuery where-  parseJSON = withObject "MatchQuery" parse-    where parse = fieldTagged $ \fn o ->-                    MatchQuery fn-                    <$> o .:  "query"-                    <*> o .:  "operator"-                    <*> o .:  "zero_terms_query"-                    <*> o .:? "cutoff_frequency"-                    <*> o .:? "type"-                    <*> o .:? "analyzer"-                    <*> o .:? "max_expansions"-                    <*> o .:? "lenient"-                    <*> o .:? "boost"--instance ToJSON MultiMatchQuery where-  toJSON (MultiMatchQuery fields (QueryString query) boolOp-          ztQ tb mmqt cf analyzer maxEx lenient) =-    object ["multi_match" .= omitNulls base]-    where base = [ "fields" .= fmap toJSON fields-                 , "query" .= query-                 , "operator" .= boolOp-                 , "zero_terms_query" .= ztQ-                 , "tiebreaker" .= tb-                 , "type" .= mmqt-                 , "cutoff_frequency" .= cf-                 , "analyzer" .= analyzer-                 , "max_expansions" .= maxEx-                 , "lenient" .= lenient ]--instance FromJSON MultiMatchQuery where-  parseJSON = withObject "MultiMatchQuery" parse-    where parse raw = do o <- raw .: "multi_match"-                         MultiMatchQuery-                           <$> o .:? "fields" .!= []-                           <*> o .: "query"-                           <*> o .: "operator"-                           <*> o .: "zero_terms_query"-                           <*> o .:? "tiebreaker"-                           <*> o .:? "type"-                           <*> o .:? "cutoff_frequency"-                           <*> o .:? "analyzer"-                           <*> o .:? "max_expansions"-                           <*> o .:? "lenient"--instance ToJSON MultiMatchQueryType where-  toJSON MultiMatchBestFields = "best_fields"-  toJSON MultiMatchMostFields = "most_fields"-  toJSON MultiMatchCrossFields = "cross_fields"-  toJSON MultiMatchPhrase = "phrase"-  toJSON MultiMatchPhrasePrefix = "phrase_prefix"--instance FromJSON MultiMatchQueryType where-  parseJSON = withText "MultiMatchPhrasePrefix" parse-    where parse "best_fields"   = pure MultiMatchBestFields-          parse "most_fields"   = pure MultiMatchMostFields-          parse "cross_fields"  = pure MultiMatchCrossFields-          parse "phrase"        = pure MultiMatchPhrase-          parse "phrase_prefix" = pure MultiMatchPhrasePrefix-          parse t = fail ("Unexpected MultiMatchPhrasePrefix: " <> show t)--instance ToJSON BooleanOperator where-  toJSON And = String "and"-  toJSON Or = String "or"--instance FromJSON BooleanOperator where-  parseJSON = withText "BooleanOperator" parse-    where parse "and" = pure And-          parse "or"  = pure Or-          parse o     = fail ("Unexpected BooleanOperator: " <> show o)--instance ToJSON ZeroTermsQuery where-  toJSON ZeroTermsNone = String "none"-  toJSON ZeroTermsAll  = String "all"--instance FromJSON ZeroTermsQuery where-  parseJSON = withText "ZeroTermsQuery" parse-    where parse "none" = pure ZeroTermsNone-          parse "all"  = pure ZeroTermsAll-          parse q      = fail ("Unexpected ZeroTermsQuery: " <> show q)--instance ToJSON MatchQueryType where-  toJSON MatchPhrase = "phrase"-  toJSON MatchPhrasePrefix = "phrase_prefix"--instance FromJSON MatchQueryType where-  parseJSON = withText "MatchQueryType" parse-    where parse "phrase"        = pure MatchPhrase-          parse "phrase_prefix" = pure MatchPhrasePrefix-          parse t               = fail ("Unexpected MatchQueryType: " <> show t)--instance FromJSON Status where-  parseJSON (Object v) = Status <$>-                         v .:? "ok" <*>-                         v .: "status" <*>-                         v .: "name" <*>-                         v .: "version" <*>-                         v .: "tagline"-  parseJSON _          = empty---instance ToJSON IndexSettings where-  toJSON (IndexSettings s r) = object ["settings" .=-                                 object ["index" .=-                                   object ["number_of_shards" .= s, "number_of_replicas" .= r]-                                 ]-                               ]--instance FromJSON IndexSettings where-  parseJSON = withObject "IndexSettings" parse-    where parse o = do s <- o .: "settings"-                       i <- s .: "index"-                       IndexSettings <$> i .: "number_of_shards"-                                     <*> i .: "number_of_replicas"--instance ToJSON UpdatableIndexSetting where-  toJSON (NumberOfReplicas x) = oPath ("index" :| ["number_of_replicas"]) x-  toJSON (AutoExpandReplicas x) = oPath ("index" :| ["auto_expand_replicas"]) x-  toJSON (RefreshInterval x) = oPath ("index" :| ["refresh_interval"]) (NominalDiffTimeJSON x)-  toJSON (IndexConcurrency x) = oPath ("index" :| ["concurrency"]) x-  toJSON (FailOnMergeFailure x) = oPath ("index" :| ["fail_on_merge_failure"]) x-  toJSON (TranslogFlushThresholdOps x) = oPath ("index" :| ["translog", "flush_threshold_ops"]) x-  toJSON (TranslogFlushThresholdSize x) = oPath ("index" :| ["translog", "flush_threshold_size"]) x-  toJSON (TranslogFlushThresholdPeriod x) = oPath ("index" :| ["translog", "flush_threshold_period"]) (NominalDiffTimeJSON x)-  toJSON (TranslogDisableFlush x) = oPath ("index" :| ["translog", "disable_flush"]) x-  toJSON (CacheFilterMaxSize x) = oPath ("index" :| ["cache", "filter", "max_size"]) x-  toJSON (CacheFilterExpire x) = oPath ("index" :| ["cache", "filter", "expire"]) (NominalDiffTimeJSON <$> x)-  toJSON (GatewaySnapshotInterval x) = oPath ("index" :| ["gateway", "snapshot_interval"]) (NominalDiffTimeJSON x)-  toJSON (RoutingAllocationInclude fs) = oPath ("index" :| ["routing", "allocation", "include"]) (attrFilterJSON fs)-  toJSON (RoutingAllocationExclude fs) = oPath ("index" :| ["routing", "allocation", "exclude"]) (attrFilterJSON fs)-  toJSON (RoutingAllocationRequire fs) = oPath ("index" :| ["routing", "allocation", "require"]) (attrFilterJSON fs)-  toJSON (RoutingAllocationEnable x) = oPath ("index" :| ["routing", "allocation", "enable"]) x-  toJSON (RoutingAllocationShardsPerNode x) = oPath ("index" :| ["routing", "allocation", "total_shards_per_node"]) x-  toJSON (RecoveryInitialShards x) = oPath ("index" :| ["recovery", "initial_shards"]) x-  toJSON (GCDeletes x) = oPath ("index" :| ["gc_deletes"]) (NominalDiffTimeJSON x)-  toJSON (TTLDisablePurge x) = oPath ("index" :| ["ttl", "disable_purge"]) x-  toJSON (TranslogFSType x) = oPath ("index" :| ["translog", "fs", "type"]) x-  toJSON (IndexCompoundFormat x) = oPath ("index" :| ["compound_format"]) x-  toJSON (IndexCompoundOnFlush x) = oPath ("index" :| ["compound_on_flush"]) x-  toJSON (WarmerEnabled x) = oPath ("index" :| ["warmer", "enabled"]) x-  toJSON (BlocksReadOnly x) = oPath ("blocks" :| ["read_only"]) x-  toJSON (BlocksRead x) = oPath ("blocks" :| ["read"]) x-  toJSON (BlocksWrite x) = oPath ("blocks" :| ["write"]) x-  toJSON (BlocksMetaData x) = oPath ("blocks" :| ["metadata"]) x--instance FromJSON UpdatableIndexSetting where-  parseJSON = withObject "UpdatableIndexSetting" parse-    where parse o = numberOfReplicas `taggedAt` ["index", "number_of_replicas"]-                <|> autoExpandReplicas `taggedAt` ["index", "auto_expand_replicas"]-                <|> refreshInterval `taggedAt` ["index", "refresh_interval"]-                <|> indexConcurrency `taggedAt` ["index", "concurrency"]-                <|> failOnMergeFailure `taggedAt` ["index", "fail_on_merge_failure"]-                <|> translogFlushThresholdOps `taggedAt` ["index", "translog", "flush_threshold_ops"]-                <|> translogFlushThresholdSize `taggedAt` ["index", "translog", "flush_threshold_size"]-                <|> translogFlushThresholdPeriod `taggedAt` ["index", "translog", "flush_threshold_period"]-                <|> translogDisableFlush `taggedAt` ["index", "translog", "disable_flush"]-                <|> cacheFilterMaxSize `taggedAt` ["index", "cache", "filter", "max_size"]-                <|> cacheFilterExpire `taggedAt` ["index", "cache", "filter", "expire"]-                <|> gatewaySnapshotInterval `taggedAt` ["index", "gateway", "snapshot_interval"]-                <|> routingAllocationInclude `taggedAt` ["index", "routing", "allocation", "include"]-                <|> routingAllocationExclude `taggedAt` ["index", "routing", "allocation", "exclude"]-                <|> routingAllocationRequire `taggedAt` ["index", "routing", "allocation", "require"]-                <|> routingAllocationEnable `taggedAt` ["index", "routing", "allocation", "enable"]-                <|> routingAllocationShardsPerNode `taggedAt` ["index", "routing", "allocation", "total_shards_per_node"]-                <|> recoveryInitialShards `taggedAt` ["index", "recovery", "initial_shards"]-                <|> gcDeletes `taggedAt` ["index", "gc_deletes"]-                <|> ttlDisablePurge `taggedAt` ["index", "ttl", "disable_purge"]-                <|> translogFSType `taggedAt` ["index", "translog", "fs", "type"]-                <|> compoundFormat `taggedAt` ["index", "compound_format"]-                <|> compoundOnFlush `taggedAt` ["index", "compound_on_flush"]-                <|> warmerEnabled `taggedAt` ["index", "warmer", "enabled"]-                <|> blocksReadOnly `taggedAt` ["blocks", "read_only"]-                <|> blocksRead `taggedAt` ["blocks", "read"]-                <|> blocksWrite `taggedAt` ["blocks", "write"]-                <|> blocksMetaData `taggedAt` ["blocks", "metadata"]-            where taggedAt f ks = taggedAt' f (Object o) ks-          taggedAt' f v [] = f =<< (parseJSON v <|> (parseJSON =<< unStringlyTypeJSON v))-          taggedAt' f v (k:ks) = withObject "Object" (\o -> do v' <- o .: k-                                                               taggedAt' f v' ks) v-          numberOfReplicas               = pure . NumberOfReplicas-          autoExpandReplicas             = pure . AutoExpandReplicas-          refreshInterval                = pure . RefreshInterval . ndtJSON-          indexConcurrency               = pure . IndexConcurrency-          failOnMergeFailure             = pure . FailOnMergeFailure-          translogFlushThresholdOps      = pure . TranslogFlushThresholdOps-          translogFlushThresholdSize     = pure . TranslogFlushThresholdSize-          translogFlushThresholdPeriod   = pure . TranslogFlushThresholdPeriod . ndtJSON-          translogDisableFlush           = pure . TranslogDisableFlush-          cacheFilterMaxSize             = pure . CacheFilterMaxSize-          cacheFilterExpire              = pure . CacheFilterExpire . fmap ndtJSON-          gatewaySnapshotInterval        = pure . GatewaySnapshotInterval . ndtJSON-          routingAllocationInclude       = fmap RoutingAllocationInclude . parseAttrFilter-          routingAllocationExclude       = fmap RoutingAllocationExclude . parseAttrFilter-          routingAllocationRequire       = fmap RoutingAllocationRequire . parseAttrFilter-          routingAllocationEnable        = pure . RoutingAllocationEnable-          routingAllocationShardsPerNode = pure . RoutingAllocationShardsPerNode-          recoveryInitialShards          = pure . RecoveryInitialShards-          gcDeletes                      = pure . GCDeletes . ndtJSON-          ttlDisablePurge                = pure . TTLDisablePurge-          translogFSType                 = pure . TranslogFSType-          compoundFormat                 = pure . IndexCompoundFormat-          compoundOnFlush                = pure . IndexCompoundOnFlush-          warmerEnabled                  = pure . WarmerEnabled-          blocksReadOnly                 = pure . BlocksReadOnly-          blocksRead                     = pure . BlocksRead-          blocksWrite                    = pure . BlocksWrite-          blocksMetaData                 = pure . BlocksMetaData--instance FromJSON IndexSettingsSummary where-  parseJSON = withObject "IndexSettingsSummary" parse-    where parse o = case HM.toList o of-                      [(ixn, v@(Object o'))] -> IndexSettingsSummary (IndexName ixn)-                                                <$> parseJSON v-                                                <*> (fmap (filter (not . redundant)) . parseSettings =<< o' .: "settings")-                      _ -> fail "Expected single-key object with index name"-          redundant (NumberOfReplicas _) = True-          redundant _ = False---- | For some reason in the settings API, all leaf values get returned--- as strings. This function attepmts to recover from this for all--- non-recursive JSON types. If nothing can be done or the same value--- would be return, it returns 'mzero'-unStringlyTypeJSON :: MonadPlus m => Value -> m Value-unStringlyTypeJSON (String "true") = return (Bool True)-unStringlyTypeJSON (String "false") = return (Bool False)-unStringlyTypeJSON (String "null") = return Null-unStringlyTypeJSON (String t) = case readMay (T.unpack t) of-                                  Just n -> return (Number n)-                                  Nothing -> mzero-unStringlyTypeJSON _ = mzero---parseSettings :: Object -> Parser [UpdatableIndexSetting]-parseSettings o = do-  o' <- o .: "index"-  -- slice the index object into singleton hashmaps and try to parse each-  parses <- forM (HM.toList o') $ \(k, v) -> do-    -- blocks are now nested into the "index" key, which is not how they're serialized-    let atRoot = Object (HM.singleton k v)-    let atIndex = Object (HM.singleton "index" atRoot)-    optional (parseJSON atRoot <|> parseJSON atIndex)-  return (catMaybes parses)--oPath :: ToJSON a => NonEmpty Text -> a -> Value-oPath (k :| []) v = object [k .= v]-oPath (k:| (h:t)) v = object [k .= oPath (h :| t) v]--attrFilterJSON :: NonEmpty NodeAttrFilter -> Value-attrFilterJSON fs = object [ n .= T.intercalate "," (toList vs)-                           | NodeAttrFilter (NodeAttrName n) vs <- toList fs]--parseAttrFilter :: Value -> Parser (NonEmpty NodeAttrFilter)-parseAttrFilter = withObject "NonEmpty NodeAttrFilter" parse-  where parse o = case HM.toList o of-                    [] -> fail "Expected non-empty list of NodeAttrFilters"-                    x:xs -> DT.mapM (uncurry parse') (x :| xs)-        parse' n = withText "Text" $ \t ->-          case T.splitOn "," t of-            fv:fvs -> return (NodeAttrFilter (NodeAttrName n) (fv :| fvs))-            [] -> fail "Expected non-empty list of filter values"--instance ToJSON ReplicaBounds where-  toJSON (ReplicasBounded a b)    = String (showText a <> "-" <> showText b)-  toJSON (ReplicasLowerBounded a) = String (showText a <> "-all")-  toJSON ReplicasUnbounded        = Bool False--instance FromJSON ReplicaBounds where-  parseJSON v = withText "ReplicaBounds" parseText v-            <|> withBool "ReplicaBounds" parseBool v-    where parseText t = case T.splitOn "-" t of-                          [a, "all"] -> ReplicasLowerBounded <$> parseReadText a-                          [a, b] -> ReplicasBounded <$> parseReadText a-                                                    <*> parseReadText b-                          _ -> fail ("Could not parse ReplicaBounds: " <> show t)-          parseBool False = pure ReplicasUnbounded-          parseBool _ = fail "ReplicasUnbounded cannot be represented with True"--instance ToJSON AllocationPolicy where-  toJSON AllocAll          = String "all"-  toJSON AllocPrimaries    = String "primaries"-  toJSON AllocNewPrimaries = String "new_primaries"-  toJSON AllocNone         = String "none"--instance FromJSON AllocationPolicy where-  parseJSON = withText "AllocationPolicy" parse-    where parse "all" = pure AllocAll-          parse "primaries" = pure AllocPrimaries-          parse "new_primaries" = pure AllocNewPrimaries-          parse "none" = pure AllocNone-          parse t = fail ("Invlaid AllocationPolicy: " <> show t)--instance ToJSON InitialShardCount where-  toJSON QuorumShards       = String "quorum"-  toJSON QuorumMinus1Shards = String "quorum-1"-  toJSON FullShards         = String "full"-  toJSON FullMinus1Shards   = String "full-1"-  toJSON (ExplicitShards x) = toJSON x--instance FromJSON InitialShardCount where-  parseJSON v = withText "InitialShardCount" parseText v-            <|> ExplicitShards <$> parseJSON v-    where parseText "quorum"   = pure QuorumShards-          parseText "quorum-1" = pure QuorumMinus1Shards-          parseText "full"     = pure FullShards-          parseText "full-1"   = pure FullMinus1Shards-          parseText _          = mzero--instance ToJSON FSType where-  toJSON FSSimple   = "simple"-  toJSON FSBuffered = "buffered"--instance FromJSON FSType where-  parseJSON = withText "FSType" parse-    where parse "simple" = pure FSSimple-          parse "buffered" = pure FSBuffered-          parse t = fail ("Invalid FSType: " <> show t)--instance ToJSON CompoundFormat where-  toJSON (CompoundFileFormat x) = Bool x-  toJSON (MergeSegmentVsTotalIndex x) = toJSON x--instance FromJSON CompoundFormat where-  parseJSON v = CompoundFileFormat <$> parseJSON v-            <|> MergeSegmentVsTotalIndex <$> parseJSON v--instance ToJSON NominalDiffTimeJSON where-  toJSON (NominalDiffTimeJSON t) = String (showText (round t :: Integer) <> "s")--instance FromJSON NominalDiffTimeJSON where-  parseJSON = withText "NominalDiffTime" parse-    where parse t = case T.takeEnd 1 t of-                      "s" -> NominalDiffTimeJSON . fromInteger <$> parseReadText (T.dropEnd 1 t)-                      _ -> fail "Invalid or missing NominalDiffTime unit (expected s)"--instance ToJSON IndexTemplate where-  toJSON (IndexTemplate p s m) = merge-    (object [ "template" .= p-            , "mappings" .= foldl' merge (object []) m-            ])-    (toJSON s)-   where-     merge (Object o1) (Object o2) = toJSON $ HM.union o1 o2-     merge o           Null        = o-     merge _           _           = undefined--instance (FromJSON a) => FromJSON (EsResult a) where-  parseJSON jsonVal@(Object v) = do-    found <- v .:? "found" .!= False-    fr <- if found-             then parseJSON jsonVal-             else return Nothing-    EsResult <$> v .:  "_index"   <*>-                 v .:  "_type"    <*>-                 v .:  "_id"      <*>-                 pure fr-  parseJSON _          = empty--instance (FromJSON a) => FromJSON (EsResultFound a) where-  parseJSON (Object v) = EsResultFound <$>-                         v .: "_version" <*>-                         v .: "_source"-  parseJSON _          = empty--instance FromJSON EsError where-  parseJSON (Object v) = EsError <$>-                         v .: "status" <*>-                         v .: "error"-  parseJSON _ = empty--instance FromJSON IndexAliasesSummary where-  parseJSON = withObject "IndexAliasesSummary" parse-    where parse o = IndexAliasesSummary . mconcat <$> mapM (uncurry go) (HM.toList o)-          go ixn = withObject "index aliases" $ \ia -> do-                     aliases <- ia .:? "aliases" .!= mempty-                     forM (HM.toList aliases) $ \(aName, v) -> do-                       let indexAlias = IndexAlias (IndexName ixn) (IndexAliasName (IndexName aName))-                       IndexAliasSummary indexAlias <$> parseJSON v---instance ToJSON IndexAliasAction where-  toJSON (AddAlias ia opts) = object ["add" .= (iaObj <> optsObj)]-    where Object iaObj = toJSON ia-          Object optsObj = toJSON opts-  toJSON (RemoveAlias ia) = object ["remove" .= iaObj]-    where Object iaObj = toJSON ia--instance ToJSON IndexAlias where-  toJSON IndexAlias {..} = object ["index" .= srcIndex-                                  , "alias" .= indexAlias-                                  ]--instance ToJSON IndexAliasCreate where-  toJSON IndexAliasCreate {..} = Object (filterObj <> routingObj)-    where filterObj = maybe mempty (HM.singleton "filter" . toJSON) aliasCreateFilter-          Object routingObj = maybe (Object mempty) toJSON aliasCreateRouting--instance ToJSON AliasRouting where-  toJSON (AllAliasRouting v) = object ["routing" .= v]-  toJSON (GranularAliasRouting srch idx) = object (catMaybes prs)-    where prs = [("search_routing" .=) <$> srch-                ,("index_routing" .=) <$> idx]--instance FromJSON AliasRouting where-  parseJSON = withObject "AliasRouting" parse-    where parse o = parseAll o <|> parseGranular o-          parseAll o = AllAliasRouting <$> o .: "routing"-          parseGranular o = do-            sr <- o .:? "search_routing"-            ir <- o .:? "index_routing"-            if isNothing sr && isNothing ir-               then fail "Both search_routing and index_routing can't be blank"-               else return (GranularAliasRouting sr ir)--instance FromJSON IndexAliasCreate where-  parseJSON v = withObject "IndexAliasCreate" parse v-    where parse o = IndexAliasCreate <$> optional (parseJSON v)-                                     <*> o .:? "filter"--instance ToJSON SearchAliasRouting where-  toJSON (SearchAliasRouting rvs) = toJSON (T.intercalate "," (routingValue <$> toList rvs))--instance FromJSON SearchAliasRouting where-  parseJSON = withText "SearchAliasRouting" parse-    where parse t = SearchAliasRouting <$> parseNEJSON (String <$> T.splitOn "," t)--instance ToJSON Search where-  toJSON (Search query sFilter sort searchAggs highlight sTrackSortScores sFrom sSize _ sFields sSource) =-    omitNulls [ "query"        .= query-              , "filter"       .= sFilter-              , "sort"         .= sort-              , "aggregations" .= searchAggs-              , "highlight"    .= highlight-              , "from"         .= sFrom-              , "size"         .= sSize-              , "track_scores" .= sTrackSortScores-              , "fields"       .= sFields-              , "_source"      .= sSource]---instance ToJSON Source where-    toJSON NoSource                         = toJSON False-    toJSON (SourcePatterns patterns)        = toJSON patterns-    toJSON (SourceIncludeExclude incl excl) = object [ "include" .= incl, "exclude" .= excl ]--instance ToJSON PatternOrPatterns where-  toJSON (PopPattern pattern)   = toJSON pattern-  toJSON (PopPatterns patterns) = toJSON patterns--instance ToJSON Include where-  toJSON (Include patterns) = toJSON patterns--instance ToJSON Exclude where-  toJSON (Exclude patterns) = toJSON patterns--instance ToJSON Pattern where-  toJSON (Pattern pattern) = toJSON pattern---instance ToJSON FieldHighlight where-    toJSON (FieldHighlight (FieldName fName) (Just fSettings)) =-        object [ fName .= fSettings ]-    toJSON (FieldHighlight (FieldName fName) Nothing) =-        object [ fName .= emptyObject ]--instance ToJSON Highlights where-    toJSON (Highlights global fields) =-        omitNulls (("fields" .= fields)-                  : highlightSettingsPairs global)--instance ToJSON HighlightSettings where-    toJSON hs = omitNulls (highlightSettingsPairs (Just hs))--highlightSettingsPairs :: Maybe HighlightSettings -> [Pair]-highlightSettingsPairs Nothing = []-highlightSettingsPairs (Just (Plain plh)) = plainHighPairs (Just plh)-highlightSettingsPairs (Just (Postings ph)) = postHighPairs (Just ph)-highlightSettingsPairs (Just (FastVector fvh)) = fastVectorHighPairs (Just fvh)---plainHighPairs :: Maybe PlainHighlight -> [Pair]-plainHighPairs Nothing = []-plainHighPairs (Just (PlainHighlight plCom plNonPost)) =-    [ "type" .= String "plain"]-    ++ commonHighlightPairs plCom-    ++ nonPostingsToPairs plNonPost--postHighPairs :: Maybe PostingsHighlight -> [Pair]-postHighPairs Nothing = []-postHighPairs (Just (PostingsHighlight pCom)) =-    ("type" .= String "postings")-    : commonHighlightPairs pCom--fastVectorHighPairs :: Maybe FastVectorHighlight -> [Pair]-fastVectorHighPairs Nothing = []-fastVectorHighPairs (Just-                     (FastVectorHighlight fvCom fvNonPostSettings fvBoundChars-                                          fvBoundMaxScan fvFragOff fvMatchedFields-                                          fvPhraseLim)) =-                        [ "type" .= String "fvh"-                        , "boundary_chars" .= fvBoundChars-                        , "boundary_max_scan" .= fvBoundMaxScan-                        , "fragment_offset" .= fvFragOff-                        , "matched_fields" .= fvMatchedFields-                        , "phraseLimit" .= fvPhraseLim]-                        ++ commonHighlightPairs fvCom-                        ++ nonPostingsToPairs fvNonPostSettings--deleteSeveral :: (Eq k, Hashable k) => [k] -> HM.HashMap k v -> HM.HashMap k v-deleteSeveral ks hm = foldr HM.delete hm ks--commonHighlightPairs :: Maybe CommonHighlight -> [Pair]-commonHighlightPairs Nothing = []-commonHighlightPairs (Just (CommonHighlight chScore chForceSource chTag chEncoder-                                      chNoMatchSize chHighlightQuery-                                      chRequireFieldMatch)) =-    [ "order" .= chScore-    , "force_source" .= chForceSource-    , "encoder" .= chEncoder-    , "no_match_size" .= chNoMatchSize-    , "highlight_query" .= chHighlightQuery-    , "require_fieldMatch" .= chRequireFieldMatch]-    ++ highlightTagToPairs chTag---nonPostingsToPairs :: Maybe NonPostings -> [Pair]-nonPostingsToPairs Nothing = []-nonPostingsToPairs (Just (NonPostings npFragSize npNumOfFrags)) =-    [ "fragment_size" .= npFragSize-    , "number_of_fragments" .= npNumOfFrags]--parseNEJSON :: (FromJSON a) => [Value] -> Parser (NonEmpty a)-parseNEJSON []     = fail "Expected non-empty list"-parseNEJSON (x:xs) = DT.mapM parseJSON (x :| xs)---instance ToJSON HighlightEncoder where-    toJSON DefaultEncoder = String "default"-    toJSON HTMLEncoder    = String "html"--highlightTagToPairs :: Maybe HighlightTag -> [Pair]-highlightTagToPairs (Just (TagSchema _))            = [ "scheme"    .=  String "default"]-highlightTagToPairs (Just (CustomTags (pre, post))) = [ "pre_tags"  .= pre-                                                      , "post_tags" .= post]-highlightTagToPairs Nothing = []--instance ToJSON SortSpec where-  toJSON (DefaultSortSpec-          (DefaultSort (FieldName dsSortFieldName) dsSortOrder dsIgnoreUnmapped-           dsSortMode dsMissingSort dsNestedFilter)) =-    object [dsSortFieldName .= omitNulls base] where-      base = [ "order" .= dsSortOrder-             , "ignore_unmapped" .= dsIgnoreUnmapped-             , "mode" .= dsSortMode-             , "missing" .= dsMissingSort-             , "nested_filter" .= dsNestedFilter ]--  toJSON (GeoDistanceSortSpec gdsSortOrder (GeoPoint (FieldName field) gdsLatLon) units) =-    object [ "unit" .= units-           , field .= gdsLatLon-           , "order" .= gdsSortOrder ]---instance ToJSON SortOrder where-  toJSON Ascending  = String "asc"-  toJSON Descending = String "desc"---instance ToJSON SortMode where-  toJSON SortMin = String "min"-  toJSON SortMax = String "max"-  toJSON SortSum = String "sum"-  toJSON SortAvg = String "avg"---instance ToJSON Missing where-  toJSON LastMissing = String "_last"-  toJSON FirstMissing = String "_first"-  toJSON (CustomMissing txt) = String txt---instance ToJSON ScoreType where-  toJSON ScoreTypeMax  = "max"-  toJSON ScoreTypeAvg  = "avg"-  toJSON ScoreTypeSum  = "sum"-  toJSON ScoreTypeNone = "none"--instance FromJSON ScoreType where-  parseJSON = withText "ScoreType" parse-    where parse "max"  = pure ScoreTypeMax-          parse "avg"  = pure ScoreTypeAvg-          parse "sum"  = pure ScoreTypeSum-          parse "none" = pure ScoreTypeNone-          parse t = fail ("Unexpected ScoreType: " <> show t)--instance ToJSON Distance where-  toJSON (Distance dCoefficient dUnit) =-    String boltedTogether where-      coefText = showText dCoefficient-      (String unitText) = toJSON dUnit-      boltedTogether = mappend coefText unitText--instance FromJSON Distance where-  parseJSON = withText "Distance" parse-    where parse t = Distance <$> parseCoeff nT-                             <*> parseJSON (String unitT)-            where (nT, unitT) = T.span validForNumber t-                  -- may be a better way to do this-                  validForNumber '-' = True-                  validForNumber '.' = True-                  validForNumber 'e' = True-                  validForNumber c = isNumber c-                  parseCoeff "" = fail "Empty string cannot be parsed as number"-                  parseCoeff s = return (read (T.unpack s))--instance ToJSON DistanceUnit where-  toJSON Miles         = String "mi"-  toJSON Yards         = String "yd"-  toJSON Feet          = String "ft"-  toJSON Inches        = String "in"-  toJSON Kilometers    = String "km"-  toJSON Meters        = String "m"-  toJSON Centimeters   = String "cm"-  toJSON Millimeters   = String "mm"-  toJSON NauticalMiles = String "nmi"---instance FromJSON DistanceUnit where-  parseJSON = withText "DistanceUnit" parse-    where parse "mi"  = pure Miles-          parse "yd"  = pure Yards-          parse "ft"  = pure Feet-          parse "in"  = pure Inches-          parse "km"  = pure Kilometers-          parse "m"   = pure Meters-          parse "cm"  = pure Centimeters-          parse "mm"  = pure Millimeters-          parse "nmi" = pure NauticalMiles-          parse u = fail ("Unrecognized DistanceUnit: " <> show u)--instance ToJSON DistanceType where-  toJSON Arc       = String "arc"-  toJSON SloppyArc = String "sloppy_arc"-  toJSON Plane     = String "plane"--instance FromJSON DistanceType where-  parseJSON = withText "DistanceType" parse-    where parse "arc" = pure Arc-          parse "sloppy_arc" = pure SloppyArc-          parse "plane" = pure Plane-          parse t = fail ("Unrecognized DistanceType: " <> show t)---instance ToJSON OptimizeBbox where-  toJSON NoOptimizeBbox = String "none"-  toJSON (OptimizeGeoFilterType gft) = toJSON gft--instance FromJSON OptimizeBbox where-  parseJSON v = withText "NoOptimizeBbox" parseNoOptimize v-            <|> parseOptimize v-    where parseNoOptimize "none" = pure NoOptimizeBbox-          parseNoOptimize _ = mzero-          parseOptimize = fmap OptimizeGeoFilterType . parseJSON--instance ToJSON GeoBoundingBoxConstraint where-  toJSON (GeoBoundingBoxConstraint-          (FieldName gbbcGeoBBField) gbbcConstraintBox cache type') =-    object [gbbcGeoBBField .= gbbcConstraintBox-           , "_cache"  .= cache-           , "type" .= type']--instance FromJSON GeoBoundingBoxConstraint where-  parseJSON = withObject "GeoBoundingBoxConstraint" parse-    where parse o = case HM.toList (deleteSeveral ["type", "_cache"] o) of-                      [(fn, v)] -> GeoBoundingBoxConstraint (FieldName fn)-                                   <$> parseJSON v-                                   <*> o .:? "_cache" .!= defaultCache-                                   <*> o .: "type"-                      _ -> fail "Could not find field name for GeoBoundingBoxConstraint"--instance ToJSON GeoFilterType where-  toJSON GeoFilterMemory  = String "memory"-  toJSON GeoFilterIndexed = String "indexed"--instance FromJSON GeoFilterType where-  parseJSON = withText "GeoFilterType" parse-    where parse "memory"  = pure GeoFilterMemory-          parse "indexed" = pure GeoFilterIndexed-          parse t         = fail ("Unrecognized GeoFilterType: " <> show t)--instance ToJSON GeoBoundingBox where-  toJSON (GeoBoundingBox gbbTopLeft gbbBottomRight) =-    object ["top_left"      .= gbbTopLeft-           , "bottom_right" .= gbbBottomRight]--instance FromJSON GeoBoundingBox where-  parseJSON = withObject "GeoBoundingBox" parse-    where parse o = GeoBoundingBox-                    <$> o .: "top_left"-                    <*> o .: "bottom_right"--instance ToJSON LatLon where-  toJSON (LatLon lLat lLon) =-    object ["lat"  .= lLat-           , "lon" .= lLon]--instance FromJSON LatLon where-  parseJSON = withObject "LatLon" parse-    where parse o = LatLon <$> o .: "lat"-                           <*> o .: "lon"---- index for smaller ranges, fielddata for longer ranges-instance ToJSON RangeExecution where-  toJSON RangeExecutionIndex     = "index"-  toJSON RangeExecutionFielddata = "fielddata"---instance FromJSON RangeExecution where-  parseJSON = withText "RangeExecution" parse-    where parse "index"     = pure RangeExecutionIndex-          parse "fielddata" = pure RangeExecutionFielddata-          parse t           = error ("Unrecognized RangeExecution " <> show t)--instance ToJSON RegexpFlags where-  toJSON AllRegexpFlags              = String "ALL"-  toJSON NoRegexpFlags               = String "NONE"-  toJSON (SomeRegexpFlags (h :| fs)) = String $ T.intercalate "|" flagStrs-    where flagStrs             = map flagStr . nub $ h:fs-          flagStr AnyString    = "ANYSTRING"-          flagStr Automaton    = "AUTOMATON"-          flagStr Complement   = "COMPLEMENT"-          flagStr Empty        = "EMPTY"-          flagStr Intersection = "INTERSECTION"-          flagStr Interval     = "INTERVAL"--instance FromJSON RegexpFlags where-  parseJSON = withText "RegexpFlags" parse-    where parse "ALL" = pure AllRegexpFlags-          parse "NONE" = pure NoRegexpFlags-          parse t = SomeRegexpFlags <$> parseNEJSON (String <$> T.splitOn "|" t)--instance FromJSON RegexpFlag where-  parseJSON = withText "RegexpFlag" parse-    where parse "ANYSTRING"    = pure AnyString-          parse "AUTOMATON"    = pure Automaton-          parse "COMPLEMENT"   = pure Complement-          parse "EMPTY"        = pure Empty-          parse "INTERSECTION" = pure Intersection-          parse "INTERVAL"     = pure Interval-          parse f              = fail ("Unknown RegexpFlag: " <> show f)--instance ToJSON Term where-  toJSON (Term field value) = object ["term" .= object-                                      [field .= value]]--instance FromJSON Term where-  parseJSON = withObject "Term" parse-    where parse o = do termObj <- o .: "term"-                       case HM.toList termObj of-                         [(fn, v)] -> Term fn <$> parseJSON v-                         _ -> fail "Expected object with 1 field-named key"--instance ToJSON BoolMatch where-  toJSON (MustMatch    term  cache) = object ["must"     .= term,-                                              "_cache" .= cache]-  toJSON (MustNotMatch term  cache) = object ["must_not" .= term,-                                              "_cache" .= cache]-  toJSON (ShouldMatch  terms cache) = object ["should"   .= fmap toJSON terms,-                                              "_cache" .= cache]--instance FromJSON BoolMatch where-  parseJSON = withObject "BoolMatch" parse-    where parse o = mustMatch `taggedWith` "must"-                <|> mustNotMatch `taggedWith` "must_not"-                <|> shouldMatch `taggedWith` "should"-            where taggedWith parser k = parser =<< o .: k-                  mustMatch t = MustMatch t <$> o .:? "_cache" .!= defaultCache-                  mustNotMatch t = MustNotMatch t <$> o .:? "_cache" .!= defaultCache-                  shouldMatch t = ShouldMatch t <$> o .:? "_cache" .!= defaultCache--instance (FromJSON a) => FromJSON (SearchResult a) where-  parseJSON (Object v) = SearchResult <$>-                         v .:  "took"         <*>-                         v .:  "timed_out"    <*>-                         v .:  "_shards"      <*>-                         v .:  "hits"         <*>-                         v .:? "aggregations" <*>-                         v .:? "_scroll_id"-  parseJSON _          = empty--instance (FromJSON a) => FromJSON (SearchHits a) where-  parseJSON (Object v) = SearchHits <$>-                         v .: "total"     <*>-                         v .: "max_score" <*>-                         v .: "hits"-  parseJSON _          = empty--instance (FromJSON a) => FromJSON (Hit a) where-  parseJSON (Object v) = Hit <$>-                         v .:  "_index"   <*>-                         v .:  "_type"    <*>-                         v .:  "_id"      <*>-                         v .:  "_score"   <*>-                         v .:?  "_source" <*>-                         v .:? "highlight"-  parseJSON _          = empty--instance FromJSON ShardResult where-  parseJSON (Object v) = ShardResult       <$>-                         v .: "total"      <*>-                         v .: "successful" <*>-                         v .: "failed"-  parseJSON _          = empty---instance FromJSON DocVersion where-  parseJSON v = do-    i <- parseJSON v-    maybe (fail "DocVersion out of range") return $ mkDocVersion i---- This insanity is because ES *sometimes* returns Replica/Shard counts as strings-instance FromJSON ReplicaCount where-  parseJSON v = parseAsInt v-            <|> parseAsString v-    where parseAsInt = fmap ReplicaCount . parseJSON-          parseAsString = withText "ReplicaCount" (fmap ReplicaCount . parseReadText)--instance FromJSON ShardCount where-  parseJSON v = parseAsInt v-            <|> parseAsString v-    where parseAsInt = fmap ShardCount . parseJSON-          parseAsString = withText "ShardCount" (fmap ShardCount . parseReadText)--instance Bounded DocVersion where-  minBound = DocVersion 1-  maxBound = DocVersion 9200000000000000000 -- 9.2e+18--instance Enum DocVersion where-  succ x-    | x /= maxBound = DocVersion (succ $ docVersionNumber x)-    | otherwise     = succError "DocVersion"-  pred x-    | x /= minBound = DocVersion (pred $ docVersionNumber x)-    | otherwise     = predError "DocVersion"-  toEnum i =-    fromMaybe (error $ show i ++ " out of DocVersion range") $ mkDocVersion i-  fromEnum = docVersionNumber-  enumFrom = boundedEnumFrom-  enumFromThen = boundedEnumFromThen---- | Username type used for HTTP Basic authentication. See 'basicAuthHook'.-newtype EsUsername = EsUsername { esUsername :: Text } deriving (Read, Show, Eq)---- | Password type used for HTTP Basic authentication. See 'basicAuthHook'.-newtype EsPassword = EsPassword { esPassword :: Text } deriving (Read, Show, Eq)+{-# LANGUAGE NamedFieldPuns             #-}+{-# LANGUAGE OverloadedStrings          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE UndecidableInstances       #-}++-------------------------------------------------------------------------------+-- |+-- Module : Database.Bloodhound.Types+-- Copyright : (C) 2014, 2015, 2016 Chris Allen+-- License : BSD-style (see the file LICENSE)+-- Maintainer : Chris Allen <cma@bitemyapp.com+-- Stability : provisional+-- Portability : DeriveGeneric, RecordWildCards+--+-- 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.+-------------------------------------------------------------------------------++++module Database.Bloodhound.Types+       ( defaultCache+       , defaultIndexSettings+       , defaultIndexDocumentSettings+       , mkSort+       , showText+       , unpackId+       , mkMatchQuery+       , mkMultiMatchQuery+       , mkBoolQuery+       , mkRangeQuery+       , mkQueryStringQuery+       , mkAggregations+       , mkTermsAggregation+       , mkTermsScriptAggregation+       , mkDateHistogram+       , mkCardinalityAggregation+       , mkDocVersion+       , docVersionNumber+       , toMissing+       , toTerms+       , toDateHistogram+       , omitNulls+       , BH(..)+       , runBH+       , BHEnv+       , bhServer+       , bhManager+       , bhRequestHook+       , mkBHEnv+       , MonadBH(..)+       , Version(..)+       , VersionNumber(..)+       , MaybeNA(..)+       , BuildHash(..)+       , Status(..)+       , Existence(..)+       , NullValue(..)+       , IndexSettings(..)+       , UpdatableIndexSetting(..)+       , IndexSettingsSummary(..)+       , AllocationPolicy(..)+       , ReplicaBounds(..)+       , Bytes(..)+       , gigabytes+       , megabytes+       , kilobytes+       , FSType(..)+       , InitialShardCount(..)+       , NodeAttrFilter(..)+       , NodeAttrName(..)+       , CompoundFormat(..)+       , IndexTemplate(..)+       , Server(..)+       , Reply+       , EsResult(..)+       , EsResultFound(..)+       , EsError(..)+       , EsProtocolException(..)+       , IndexAlias(..)+       , IndexAliasName(..)+       , IndexAliasAction(..)+       , IndexAliasCreate(..)+       , IndexAliasSummary(..)+       , IndexAliasesSummary(..)+       , AliasRouting(..)+       , SearchAliasRouting(..)+       , IndexAliasRouting(..)+       , RoutingValue(..)+       , DocVersion+       , ExternalDocVersion(..)+       , VersionControl(..)+       , DocumentParent(..)+       , IndexDocumentSettings(..)+       , Query(..)+       , Search(..)+       , SearchType(..)+       , SearchResult(..)+       , ScrollId(..)+       , SearchHits(..)+       , TrackSortScores+       , From(..)+       , Size(..)+       , Source(..)+       , PatternOrPatterns(..)+       , Include(..)+       , Exclude(..)+       , Pattern(..)+       , ShardResult(..)+       , Hit(..)+       , Filter(..)+       , Seminearring(..)+       , BoolMatch(..)+       , Term(..)+       , GeoPoint(..)+       , GeoBoundingBoxConstraint(..)+       , GeoBoundingBox(..)+       , GeoFilterType(..)+       , Distance(..)+       , DistanceUnit(..)+       , DistanceType(..)+       , DistanceRange(..)+       , OptimizeBbox(..)+       , LatLon(..)+       , RangeValue(..)+       , RangeExecution(..)+       , LessThan(..)+       , LessThanEq(..)+       , GreaterThan(..)+       , GreaterThanEq(..)+       , LessThanD(..)+       , LessThanEqD(..)+       , GreaterThanD(..)+       , GreaterThanEqD(..)+       , Regexp(..)+       , RegexpFlags(..)+       , RegexpFlag(..)+       , FieldName(..)+       , Script(..)+       , IndexName(..)+       , IndexSelection(..)+       , NodeSelection(..)+       , NodeSelector(..)+       , IndexOptimizationSettings(..)+       , defaultIndexOptimizationSettings+       , TemplateName(..)+       , TemplatePattern(..)+       , MappingName(..)+       , DocId(..)+       , CacheName(..)+       , CacheKey(..)+       , BulkOperation(..)+       , ReplicaCount(..)+       , ShardCount(..)+       , Sort+       , SortMode(..)+       , SortOrder(..)+       , SortSpec(..)+       , DefaultSort(..)+       , Missing(..)+       , OpenCloseIndex(..)+       , Method+       , Boost(..)+       , MatchQuery(..)+       , MultiMatchQuery(..)+       , BoolQuery(..)+       , BoostingQuery(..)+       , CommonTermsQuery(..)+       , DisMaxQuery(..)+       , FilteredQuery(..)+       , FuzzyLikeThisQuery(..)+       , FuzzyLikeFieldQuery(..)+       , FuzzyQuery(..)+       , HasChildQuery(..)+       , HasParentQuery(..)+       , IndicesQuery(..)+       , MoreLikeThisQuery(..)+       , MoreLikeThisFieldQuery(..)+       , NestedQuery(..)+       , PrefixQuery(..)+       , QueryStringQuery(..)+       , SimpleQueryStringQuery(..)+       , RangeQuery(..)+       , RegexpQuery(..)+       , QueryString(..)+       , BooleanOperator(..)+       , ZeroTermsQuery(..)+       , CutoffFrequency(..)+       , Analyzer(..)+       , MaxExpansions(..)+       , Lenient(..)+       , MatchQueryType(..)+       , MultiMatchQueryType(..)+       , Tiebreaker(..)+       , MinimumMatch(..)+       , DisableCoord(..)+       , CommonMinimumMatch(..)+       , MinimumMatchHighLow(..)+       , PrefixLength(..)+       , Fuzziness(..)+       , IgnoreTermFrequency(..)+       , MaxQueryTerms(..)+       , ScoreType(..)+       , Score+       , Cache+       , TypeName(..)+       , BoostTerms(..)+       , MaxWordLength(..)+       , MinWordLength(..)+       , MaxDocFrequency(..)+       , MinDocFrequency(..)+       , PhraseSlop(..)+       , StopWord(..)+       , QueryPath(..)+       , MinimumTermFrequency(..)+       , PercentMatch(..)+       , FieldDefinition(..)+       , MappingField(..)+       , Mapping(..)+       , AllowLeadingWildcard(..)+       , LowercaseExpanded(..)+       , GeneratePhraseQueries(..)+       , Locale(..)+       , AnalyzeWildcard(..)+       , EnablePositionIncrements(..)+       , SimpleQueryFlag(..)+       , FieldOrFields(..)+       , Monoid(..)+       , ToJSON(..)+       , Interval(..)+       , TimeInterval(..)+       , ExecutionHint(..)+       , CollectionMode(..)+       , TermOrder(..)+       , TermInclusion(..)+       , SnapshotRepoSelection(..)+       , GenericSnapshotRepo(..)+       , SnapshotRepo(..)+       , SnapshotRepoConversionError(..)+       , SnapshotRepoType(..)+       , GenericSnapshotRepoSettings(..)+       , SnapshotRepoUpdateSettings(..)+       , defaultSnapshotRepoUpdateSettings+       , SnapshotRepoName(..)+       , SnapshotRepoPattern(..)+       , SnapshotVerification(..)+       , SnapshotNodeVerification(..)+       , FullNodeId(..)+       , NodeName(..)+       , ClusterName(..)+       , NodesInfo(..)+       , NodesStats(..)+       , NodeStats(..)+       , NodeBreakersStats(..)+       , NodeBreakerStats(..)+       , NodeHTTPStats(..)+       , NodeTransportStats(..)+       , NodeFSStats(..)+       , NodeDataPathStats(..)+       , NodeFSTotalStats(..)+       , NodeNetworkStats(..)+       , NodeThreadPoolsStats(..)+       , NodeThreadPoolStats(..)+       , NodeJVMStats(..)+       , JVMBufferPoolStats(..)+       , JVMGCStats(..)+       , JVMPoolStats(..)+       , NodeProcessStats(..)+       , NodeOSStats(..)+       , LoadAvgs(..)+       , NodeIndicesStats(..)+       , EsAddress(..)+       , PluginName(..)+       , NodeInfo(..)+       , NodePluginInfo(..)+       , NodeHTTPInfo(..)+       , NodeTransportInfo(..)+       , BoundTransportAddress(..)+       , NodeNetworkInfo(..)+       , MacAddress(..)+       , NetworkInterfaceName(..)+       , NodeNetworkInterface(..)+       , NodeThreadPoolsInfo(..)+       , NodeThreadPoolInfo(..)+       , ThreadPoolSize(..)+       , ThreadPoolType(..)+       , NodeJVMInfo(..)+       , JVMMemoryPool(..)+       , JVMGCCollector(..)+       , JVMMemoryInfo(..)+       , PID(..)+       , NodeOSInfo(..)+       , CPUInfo(..)+       , NodeProcessInfo(..)+       , FsSnapshotRepo(..)+       , SnapshotCreateSettings(..)+       , defaultSnapshotCreateSettings+       , SnapshotSelection(..)+       , SnapshotPattern(..)+       , SnapshotInfo(..)+       , SnapshotShardFailure(..)+       , ShardId(..)+       , SnapshotName(..)+       , SnapshotState(..)+       , SnapshotRestoreSettings(..)+       , defaultSnapshotRestoreSettings+       , RestoreRenamePattern(..)+       , RestoreRenameToken(..)+       , RRGroupRefNum+       , rrGroupRefNum+       , mkRRGroupRefNum+       , RestoreIndexSettings(..)++       , Aggregation(..)+       , Aggregations+       , AggregationResults+       , BucketValue(..)+       , Bucket(..)+       , BucketAggregation(..)+       , TermsAggregation(..)+       , MissingAggregation(..)+       , ValueCountAggregation(..)+       , FilterAggregation(..)+       , CardinalityAggregation(..)+       , DateHistogramAggregation(..)+       , DateRangeAggregation(..)+       , DateRangeAggRange(..)+       , DateMathExpr(..)+       , DateMathAnchor(..)+       , DateMathModifier(..)+       , DateMathUnit(..)++       , Highlights(..)+       , FieldHighlight(..)+       , HighlightSettings(..)+       , PlainHighlight(..)+       , PostingsHighlight(..)+       , FastVectorHighlight(..)+       , CommonHighlight(..)+       , NonPostings(..)+       , HighlightEncoder(..)+       , HighlightTag(..)+       , HitHighlight++       , MissingResult(..)+       , TermsResult(..)+       , DateHistogramResult(..)+       , DateRangeResult(..)++       , EsUsername(..)+       , EsPassword(..)+         ) where++import           Control.Applicative                as A+import           Control.Arrow                      (first)+import           Control.Monad.Catch+import           Control.Monad.Except+import           Control.Monad.Reader+import           Control.Monad.State+import           Control.Monad.Writer+import           Data.Aeson+import           Data.Aeson.Types                   (Pair, Parser, emptyObject,+                                                     parseEither, parseMaybe)+import qualified Data.ByteString.Lazy.Char8         as L+import           Data.Char+import           Data.Hashable                      (Hashable)+import qualified Data.HashMap.Strict                as HM+import           Data.List                          (foldl', intercalate, nub)+import           Data.List.NonEmpty                 (NonEmpty (..), toList)+import qualified Data.Map.Strict                    as M+import           Data.Maybe+import           Data.Scientific                    (Scientific)+import           Data.Text                          (Text)+import qualified Data.Text                          as T+import           Data.Time.Calendar+import           Data.Time.Clock                    (NominalDiffTime, UTCTime)+import           Data.Time.Clock.POSIX+import qualified Data.Traversable                   as DT+import           Data.Typeable                      (Typeable)+import qualified Data.Vector                        as V+import qualified Data.Version                       as Vers+import           GHC.Enum+import           GHC.Generics                       (Generic)+import           Network.HTTP.Client+import qualified Network.HTTP.Types.Method          as NHTM+import qualified Text.ParserCombinators.ReadP       as RP+import qualified Text.Read                          as TR++import           Database.Bloodhound.Types.Class+import           Database.Bloodhound.Types.Internal++-- $setup+-- >>> :set -XOverloadedStrings+-- >>> import Data.Aeson+-- >>> import Database.Bloodhound+-- >>> let testServer = (Server "http://localhost:9200")+-- >>> let testIndex = IndexName "twitter"+-- >>> let testMapping = MappingName "tweet"+-- >>> let defaultIndexSettings = IndexSettings (ShardCount 3) (ReplicaCount 2)++-- defaultIndexSettings is exported by Database.Bloodhound as well+-- no trailing slashes in servers, library handles building the path.++-- | Create a 'BHEnv' with all optional fields defaulted. HTTP hook+-- will be a noop. You can use the exported fields to customize it further, e.g.:+--+-- >> (mkBHEnv myServer myManager) { bhRequestHook = customHook }+mkBHEnv :: Server -> Manager -> BHEnv+mkBHEnv s m = BHEnv s m return++newtype BH m a = BH {+      unBH :: ReaderT BHEnv m a+    } deriving ( Functor+               , A.Applicative+               , Monad+               , MonadIO+               , MonadState s+               , MonadWriter w+               , MonadError e+               , Alternative+               , MonadPlus+               , MonadFix+               , MonadThrow+               , MonadCatch+               , MonadMask)++instance MonadTrans BH where+  lift = BH . lift++instance (MonadReader r m) => MonadReader r (BH m) where+    ask = lift ask+    local f (BH (ReaderT m)) = BH $ ReaderT $ \r ->+      local f (m r)++instance (Functor m, Applicative m, MonadIO m) => MonadBH (BH m) where+  getBHEnv = BH getBHEnv++runBH :: BHEnv -> BH m a -> m a+runBH e f = runReaderT (unBH f) e++{-| 'Version' is embedded in 'Status' -}+data Version = Version { number          :: VersionNumber+                       , build_hash      :: BuildHash+                       , build_timestamp :: UTCTime+                       , build_snapshot  :: Bool+                       , lucene_version  :: VersionNumber } deriving (Eq, Read, Show, Generic, Typeable)++-- | Traditional software versioning number+newtype VersionNumber = VersionNumber { versionNumber :: Vers.Version+                                      } deriving (Eq, Read, Show, Generic, Typeable, Ord)++{-| 'Status' is a data type for describing the JSON body returned by+    Elasticsearch when you query its status. This was deprecated in 1.2.0.++   <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-status.html#indices-status>+-}++data Status = Status { ok      :: Maybe Bool+                     , status  :: Int+                     , name    :: Text+                     , version :: Version+                     , tagline :: Text } deriving (Eq, Read, Show, Generic)++{-| 'IndexSettings' is used to configure the shards and replicas when you create+   an Elasticsearch Index.++   <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-create-index.html>+-}++data IndexSettings =+  IndexSettings { indexShards   :: ShardCount+                , indexReplicas :: ReplicaCount } deriving (Eq, Read, Show, Generic, Typeable)++{-| 'defaultIndexSettings' is an 'IndexSettings' with 3 shards and 2 replicas. -}+defaultIndexSettings :: IndexSettings+defaultIndexSettings =  IndexSettings (ShardCount 3) (ReplicaCount 2)+++{-| 'IndexOptimizationSettings' is used to configure index optimization. See+    <https://www.elastic.co/guide/en/elasticsearch/reference/1.7/indices-optimize.html>+    for more info.+-}+data IndexOptimizationSettings =+  IndexOptimizationSettings { maxNumSegments     :: Maybe Int+                            -- ^ Number of segments to optimize to. 1 will fully optimize the index. If omitted, the default behavior is to only optimize if the server deems it necessary.+                            , onlyExpungeDeletes :: Bool+                            -- ^ Should the optimize process only expunge segments with deletes in them? If the purpose of the optimization is to free disk space, this should be set to True.+                            , flushAfterOptimize :: Bool+                            -- ^ Should a flush be performed after the optimize.+                            } deriving (Eq, Show, Generic, Typeable)+++{-| 'defaultIndexOptimizationSettings' implements the default settings that+    ElasticSearch uses for index optimization. 'maxNumSegments' is Nothing,+    'onlyExpungeDeletes' is False, and flushAfterOptimize is True.+-}+defaultIndexOptimizationSettings :: IndexOptimizationSettings+defaultIndexOptimizationSettings = IndexOptimizationSettings Nothing False True++{-| 'UpdatableIndexSetting' are settings which may be updated after an index is created.++   <https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html>+-}+data UpdatableIndexSetting = NumberOfReplicas ReplicaCount+                           -- ^ The number of replicas each shard has.+                           | AutoExpandReplicas ReplicaBounds+                           | BlocksReadOnly Bool+                           -- ^ Set to True to have the index read only. False to allow writes and metadata changes.+                           | BlocksRead Bool+                           -- ^ Set to True to disable read operations against the index.+                           | BlocksWrite Bool+                           -- ^ Set to True to disable write operations against the index.+                           | BlocksMetaData Bool+                           -- ^ Set to True to disable metadata operations against the index.+                           | RefreshInterval NominalDiffTime+                           -- ^ The async refresh interval of a shard+                           | IndexConcurrency Int+                           | FailOnMergeFailure Bool+                           | TranslogFlushThresholdOps Int+                           -- ^ When to flush on operations.+                           | TranslogFlushThresholdSize Bytes+                           -- ^ When to flush based on translog (bytes) size.+                           | TranslogFlushThresholdPeriod NominalDiffTime+                           -- ^ When to flush based on a period of not flushing.+                           | TranslogDisableFlush Bool+                           -- ^ Disables flushing. Note, should be set for a short interval and then enabled.+                           | CacheFilterMaxSize (Maybe Bytes)+                           -- ^ The maximum size of filter cache (per segment in shard).+                           | CacheFilterExpire (Maybe NominalDiffTime)+                           -- ^ The expire after access time for filter cache.+                           | GatewaySnapshotInterval NominalDiffTime+                           -- ^ The gateway snapshot interval (only applies to shared gateways).+                           | RoutingAllocationInclude (NonEmpty NodeAttrFilter)+                           -- ^ A node matching any rule will be allowed to host shards from the index.+                           | RoutingAllocationExclude (NonEmpty NodeAttrFilter)+                           -- ^ A node matching any rule will NOT be allowed to host shards from the index.+                           | RoutingAllocationRequire (NonEmpty NodeAttrFilter)+                           -- ^ Only nodes matching all rules will be allowed to host shards from the index.+                           | RoutingAllocationEnable AllocationPolicy+                           -- ^ Enables shard allocation for a specific index.+                           | RoutingAllocationShardsPerNode ShardCount+                           -- ^ Controls the total number of shards (replicas and primaries) allowed to be allocated on a single node.+                           | RecoveryInitialShards InitialShardCount+                           -- ^ When using local gateway a particular shard is recovered only if there can be allocated quorum shards in the cluster.+                           | GCDeletes NominalDiffTime+                           | TTLDisablePurge Bool+                           -- ^ Disables temporarily the purge of expired docs.+                           | TranslogFSType FSType+                           | IndexCompoundFormat CompoundFormat+                           | IndexCompoundOnFlush Bool+                           | WarmerEnabled Bool+                           deriving (Eq, Show, Generic, Typeable)++data AllocationPolicy = AllocAll+                      -- ^ Allows shard allocation for all shards.+                      | AllocPrimaries+                      -- ^ Allows shard allocation only for primary shards.+                      | AllocNewPrimaries+                      -- ^ Allows shard allocation only for primary shards for new indices.+                      | AllocNone+                      -- ^ No shard allocation is allowed+                      deriving (Eq, Read, Show, Generic, Typeable)++data ReplicaBounds = ReplicasBounded Int Int+                   | ReplicasLowerBounded Int+                   | ReplicasUnbounded+                   deriving (Eq, Read, Show, Generic, Typeable)++-- | A measure of bytes used for various configurations. You may want+-- to use smart constructors like 'gigabytes' for larger values.+--+-- >>> gigabytes 9+-- Bytes 9000000000+--+-- >>> megabytes 9+-- Bytes 9000000+--+-- >>> kilobytes 9+-- Bytes 9000+newtype Bytes = Bytes Int deriving (Eq, Read, Show, Generic, Typeable, Ord, ToJSON, FromJSON)++gigabytes :: Int -> Bytes+gigabytes n = megabytes (1000 * n)+++megabytes :: Int -> Bytes+megabytes n = kilobytes (1000 * n)+++kilobytes :: Int -> Bytes+kilobytes n = Bytes (1000 * n)+++data FSType = FSSimple+            | FSBuffered deriving (Eq, Read, Show, Generic, Typeable, Ord)++data InitialShardCount = QuorumShards+                       | QuorumMinus1Shards+                       | FullShards+                       | FullMinus1Shards+                       | ExplicitShards Int+                       deriving (Eq, Read, Show, Generic, Typeable)++data NodeAttrFilter = NodeAttrFilter { nodeAttrFilterName   :: NodeAttrName+                                     , nodeAttrFilterValues :: NonEmpty Text}+                                     deriving (Eq, Read, Show, Generic, Ord, Typeable)++newtype NodeAttrName = NodeAttrName Text deriving (Eq, Read, Show, Ord, Generic, Typeable)++data CompoundFormat = CompoundFileFormat Bool+                    | MergeSegmentVsTotalIndex Double+                    -- ^ percentage between 0 and 1 where 0 is false, 1 is true+                    deriving (Eq, Read, Show, Generic, Typeable)++newtype NominalDiffTimeJSON = NominalDiffTimeJSON { ndtJSON ::  NominalDiffTime }++data IndexSettingsSummary = IndexSettingsSummary { sSummaryIndexName     :: IndexName+                                                 , sSummaryFixedSettings :: IndexSettings+                                                 , sSummaryUpdateable    :: [UpdatableIndexSetting]}+                                                 deriving (Eq, Show, Generic, Typeable)++{-| 'Reply' and 'Method' are type synonyms from 'Network.HTTP.Types.Method.Method' -}+type Reply = Network.HTTP.Client.Response L.ByteString+type Method = NHTM.Method++{-| 'OpenCloseIndex' is a sum type for opening and closing indices.++   <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-open-close.html>+-}+data OpenCloseIndex = OpenIndex | CloseIndex deriving (Eq, Read, Show, Generic, Typeable)++data FieldType = GeoPointType+               | GeoShapeType+               | FloatType+               | IntegerType+               | LongType+               | ShortType+               | ByteType deriving (Eq, Read, Show, Generic, Typeable)++data FieldDefinition =+  FieldDefinition { fieldType :: FieldType } deriving (Eq, Read, Show, Generic, Typeable)++{-| An 'IndexTemplate' defines a template that will automatically be+    applied to new indices created. The templates include both+    'IndexSettings' and mappings, and a simple 'TemplatePattern' that+    controls if the template will be applied to the index created.+    Specify mappings as follows: @[toJSON TweetMapping, ...]@++    https://www.elastic.co/guide/en/elasticsearch/reference/1.7/indices-templates.html+-}+data IndexTemplate =+  IndexTemplate { templatePattern  :: TemplatePattern+                , templateSettings :: Maybe IndexSettings+                , templateMappings :: [Value]+                }++data MappingField =+  MappingField   { mappingFieldName :: FieldName+                 , fieldDefinition  :: FieldDefinition } deriving (Eq, Read, Show, Generic, Typeable)++{-| Support for type reification of 'Mapping's is currently incomplete, for+    now the mapping API verbiage expects a 'ToJSON'able blob.++    Indexes have mappings, mappings are schemas for the documents contained in the+    index. I'd recommend having only one mapping per index, always having a mapping,+    and keeping different kinds of documents separated if possible.+-}+data Mapping = Mapping { typeName      :: TypeName+                       , mappingFields :: [MappingField] } deriving (Eq, Read, Show, Generic, Typeable)++{-| 'BulkOperation' is a sum type for expressing the four kinds of bulk+    operation index, create, delete, and update. 'BulkIndex' behaves like an+    "upsert", 'BulkCreate' will fail if a document already exists at the DocId.++   <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk>+-}+data BulkOperation =+    BulkIndex  IndexName MappingName DocId Value+  | BulkCreate IndexName MappingName DocId Value+  | BulkDelete IndexName MappingName DocId+  | BulkUpdate IndexName MappingName DocId Value deriving (Eq, Read, Show, Generic, Typeable)++{-| 'EsResult' describes the standard wrapper JSON document that you see in+    successful Elasticsearch lookups or lookups that couldn't find the document.+-}+data EsResult a = EsResult { _index      :: Text+                           , _type       :: Text+                           , _id         :: Text+                           , foundResult :: Maybe (EsResultFound a)} deriving (Eq, Read, Show, Generic, Typeable)++{-| 'EsResultFound' contains the document and its metadata inside of an+    'EsResult' when the document was successfully found.+-}+data EsResultFound a = EsResultFound {  _version :: DocVersion+                                     , _source   :: a } deriving (Eq, Read, Show, Generic, Typeable)++{-| 'EsError' is the generic type that will be returned when there was a+    problem. If you can't parse the expected response, its a good idea to+    try parsing this.+-}+data EsError = EsError { errorStatus  :: Int+                       , errorMessage :: Text } deriving (Eq, Read, Show, Generic, Typeable)++{-| 'EsProtocolException' will be thrown if Bloodhound cannot parse a response+returned by the ElasticSearch server. If you encounter this error, please+verify that your domain data types and FromJSON instances are working properly+(for example, the 'a' of '[Hit a]' in 'SearchResult.searchHits.hits'). If you're+sure that your mappings are correct, then this error may be an indication of an+incompatibility between Bloodhound and ElasticSearch. Please open a bug report+and be sure to include the exception body.+-}+data EsProtocolException = EsProtocolException { esProtoExBody :: L.ByteString }+                                               deriving (Eq, Read, Show, Generic, Typeable)++instance Exception EsProtocolException++data IndexAlias = IndexAlias { srcIndex   :: IndexName+                             , indexAlias :: IndexAliasName } deriving (Eq, Read, Show, Generic, Typeable)++newtype IndexAliasName = IndexAliasName { indexAliasName :: IndexName } deriving (Eq, Read, Show, Generic, ToJSON)++data IndexAliasAction = AddAlias IndexAlias IndexAliasCreate+                      | RemoveAlias IndexAlias deriving (Read, Show, Eq, Generic, Typeable)++data IndexAliasCreate = IndexAliasCreate { aliasCreateRouting :: Maybe AliasRouting+                                         , aliasCreateFilter  :: Maybe Filter}+                                         deriving (Read, Show, Eq, Generic, Typeable)++data AliasRouting = AllAliasRouting RoutingValue+                  | GranularAliasRouting (Maybe SearchAliasRouting) (Maybe IndexAliasRouting)+                  deriving (Read, Show, Eq, Generic, Typeable)++newtype SearchAliasRouting = SearchAliasRouting (NonEmpty RoutingValue) deriving (Read, Show, Eq, Generic, Typeable)++newtype IndexAliasRouting = IndexAliasRouting RoutingValue deriving (Read, Show, Eq, Generic, ToJSON, FromJSON, Typeable)++newtype RoutingValue = RoutingValue { routingValue :: Text } deriving (Read, Show, Eq, Generic, ToJSON, FromJSON, Typeable)++newtype IndexAliasesSummary = IndexAliasesSummary { indexAliasesSummary :: [IndexAliasSummary] } deriving (Read, Show, Eq, Generic, Typeable)++{-| 'IndexAliasSummary' is a summary of an index alias configured for a server. -}+data IndexAliasSummary = IndexAliasSummary { indexAliasSummaryAlias  :: IndexAlias+                                           , indexAliasSummaryCreate :: IndexAliasCreate} deriving (Read, Show, Eq, Generic, Typeable)++{-| 'DocVersion' is an integer version number for a document between 1+and 9.2e+18 used for <<https://www.elastic.co/guide/en/elasticsearch/guide/current/optimistic-concurrency-control.html optimistic concurrency control>>.+-}+newtype DocVersion = DocVersion {+      docVersionNumber :: Int+    } deriving (Eq, Read, Show, Generic, Ord, ToJSON)++-- | Smart constructor for in-range doc version+mkDocVersion :: Int -> Maybe DocVersion+mkDocVersion i+  | i >= (docVersionNumber minBound) && i <= (docVersionNumber maxBound) =+    Just $ DocVersion i+  | otherwise = Nothing+++{-| 'ExternalDocVersion' is a convenience wrapper if your code uses its+own version numbers instead of ones from ES.+-}+newtype ExternalDocVersion = ExternalDocVersion DocVersion+    deriving (Eq, Read, Show, Generic, Ord, Bounded, Enum, ToJSON)++{-| 'VersionControl' is specified when indexing documents as a+optimistic concurrency control.+-}+data VersionControl = NoVersionControl+                    -- ^ Don't send a version. This is a pure overwrite.+                    | InternalVersion DocVersion+                    -- ^ Use the default ES versioning scheme. Only+                    -- index the document if the version is the same+                    -- as the one specified. Only applicable to+                    -- updates, as you should be getting Version from+                    -- a search result.+                    | ExternalGT ExternalDocVersion+                    -- ^ Use your own version numbering. Only index+                    -- the document if the version is strictly higher+                    -- OR the document doesn't exist. The given+                    -- version will be used as the new version number+                    -- for the stored document. N.B. All updates must+                    -- increment this number, meaning there is some+                    -- global, external ordering of updates.+                    | ExternalGTE ExternalDocVersion+                    -- ^ Use your own version numbering. Only index+                    -- the document if the version is equal or higher+                    -- than the stored version. Will succeed if there+                    -- is no existing document. The given version will+                    -- be used as the new version number for the+                    -- stored document. Use with care, as this could+                    -- result in data loss.+                    | ForceVersion ExternalDocVersion+                    -- ^ The document will always be indexed and the+                    -- given version will be the new version. This is+                    -- typically used for correcting errors. Use with+                    -- care, as this could result in data loss.+                    deriving (Read, Show, Eq, Generic, Ord)++{-| 'DocumentParent' is used to specify a parent document.+-}+newtype DocumentParent = DocumentParent DocId+  deriving (Eq, Read, Show, Generic, Typeable)++{-| 'IndexDocumentSettings' are special settings supplied when indexing+a document. For the best backwards compatiblity when new fields are+added, you should probably prefer to start with 'defaultIndexDocumentSettings'+-}+data IndexDocumentSettings =+  IndexDocumentSettings { idsVersionControl :: VersionControl+                        , idsParent         :: Maybe DocumentParent+                        } deriving (Eq, Read, Show, Generic, Typeable)++{-| Reasonable default settings. Chooses no version control and no parent.+-}+defaultIndexDocumentSettings :: IndexDocumentSettings+defaultIndexDocumentSettings = IndexDocumentSettings NoVersionControl Nothing++{-| '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.+-}+type Sort = [SortSpec]++{-| 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.++<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>+-}+data SortSpec = DefaultSortSpec DefaultSort+              | GeoDistanceSortSpec SortOrder GeoPoint DistanceUnit deriving (Eq, Read, Show, Generic, Typeable)++{-| 'DefaultSort' is usually the kind of 'SortSpec' you'll want. There's a+    'mkSort' convenience function for when you want to specify only the most+    common parameters.++<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>+-}+data DefaultSort =+  DefaultSort { sortFieldName  :: FieldName+              , sortOrder      :: SortOrder+                                  -- default False+              , ignoreUnmapped :: Bool+              , sortMode       :: Maybe SortMode+              , missingSort    :: Maybe Missing+              , nestedFilter   :: Maybe Filter } deriving (Eq, Read, Show, Generic, Typeable)++{-| 'SortOrder' is 'Ascending' or 'Descending', as you might expect. These get+    encoded into "asc" or "desc" when turned into JSON.++<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#search-request-sort>+-}+data SortOrder = Ascending+               | Descending deriving (Eq, Read, Show, Generic, Typeable)++{-| 'Missing' prescribes how to handle missing fields. A missing field can be+    sorted last, first, or using a custom value as a substitute.++<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#_missing_values>+-}+data Missing = LastMissing+             | FirstMissing+             | CustomMissing Text deriving (Eq, Read, Show, Generic, Typeable)++{-| 'SortMode' prescribes how to handle sorting array/multi-valued fields.++http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#_sort_mode_option+-}+data SortMode = SortMin+              | SortMax+              | SortSum+              | SortAvg deriving (Eq, Read, Show, Generic, Typeable)++{-| 'mkSort' defaults everything but the 'FieldName' and the 'SortOrder' so+    that you can concisely describe the usual kind of 'SortSpec's you want.+-}+mkSort :: FieldName -> SortOrder -> DefaultSort+mkSort fieldName sOrder = DefaultSort fieldName sOrder False Nothing Nothing Nothing++{-| 'Cache' is for telling ES whether it should cache a 'Filter' not.+    'Query's cannot be cached.+-}+type Cache   = Bool -- caching on/off+defaultCache :: Cache+defaultCache = False++{-| 'PrefixValue' is used in 'PrefixQuery' as the main query component.+-}+type PrefixValue = Text++{-| 'BooleanOperator' is the usual And/Or operators with an ES compatible+    JSON encoding baked in. Used all over the place.+-}+data BooleanOperator = And | Or deriving (Eq, Read, Show, Generic, Typeable)++{-| 'ShardCount' is part of 'IndexSettings'+-}+newtype ShardCount = ShardCount Int deriving (Eq, Read, Show, Generic, ToJSON, Typeable)++{-| 'ReplicaCount' is part of 'IndexSettings'+-}+newtype ReplicaCount = ReplicaCount Int deriving (Eq, Read, Show, Generic, ToJSON, Typeable)++{-| 'IndexName' is used to describe which index to query/create/delete+-}+newtype IndexName = IndexName Text deriving (Eq, Generic, Read, Show, ToJSON, FromJSON, Typeable)++{-| 'IndexSelection' is used for APIs which take a single index, a list of+    indexes, or the special @_all@ index.+-}+--TODO: this does not fully support <https://www.elastic.co/guide/en/elasticsearch/reference/1.7/multi-index.html multi-index syntax>. It wouldn't be too hard to implement but you'd have to add the optional parameters (ignore_unavailable, allow_no_indices, expand_wildcards) to any APIs using it. Also would be a breaking API.+data IndexSelection = IndexList (NonEmpty IndexName)+                    | AllIndexes deriving (Eq, Generic, Show, Typeable)++{-| 'NodeSelection' is used for most cluster APIs. See <https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html#cluster-nodes here> for more details.+-}+data NodeSelection = LocalNode+                   -- ^ Whatever node receives this request+                   | NodeList (NonEmpty NodeSelector)+                   | AllNodes deriving (Eq, Generic, Show, Typeable)+++-- | An exact match or pattern to identify a node. Note that All of+-- these options support wildcarding, so your node name, server, attr+-- name can all contain * characters to be a fuzzy match.+data NodeSelector = NodeByName NodeName+                  | NodeByFullNodeId FullNodeId+                  | NodeByHost Server+                  -- ^ e.g. 10.0.0.1 or even 10.0.0.*+                  | NodeByAttribute NodeAttrName Text+                  -- ^ NodeAttrName can be a pattern, e.g. rack*. The value can too.+                  deriving (Eq, Generic, Show, Typeable)++{-| 'TemplateName' is used to describe which template to query/create/delete+-}+newtype TemplateName = TemplateName Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 'TemplatePattern' represents a pattern which is matched against index names+-}+newtype TemplatePattern = TemplatePattern Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 'MappingName' is part of mappings which are how ES describes and schematizes+    the data in the indices.+-}+newtype MappingName = MappingName Text deriving (Eq, Generic, Read, Show, ToJSON, FromJSON, Typeable)++{-| 'DocId' is a generic wrapper value for expressing unique Document IDs.+    Can be set by the user or created by ES itself. Often used in client+    functions for poking at specific documents.+-}+newtype DocId = DocId Text deriving (Eq, Generic, Read, Show, ToJSON, FromJSON, Typeable)++{-| 'QueryString' is used to wrap query text bodies, be they human written or not.+-}+newtype QueryString = QueryString Text deriving (Eq, Generic, Read, Show, ToJSON, FromJSON, Typeable)++{-| 'FieldName' is used all over the place wherever a specific field within+     a document needs to be specified, usually in 'Query's or 'Filter's.+-}+newtype FieldName = FieldName Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+++{-| 'Script' is often used in place of 'FieldName' to specify more+complex ways of extracting a value from a document.+-}+newtype Script = Script { scriptText :: Text } deriving (Eq, Read, Show, Generic, Typeable)++{-| 'CacheName' is used in 'RegexpFilter' for describing the+    'CacheKey' keyed caching behavior.+-}+newtype CacheName = CacheName Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 'CacheKey' is used in 'RegexpFilter' to key regex caching.+-}+newtype CacheKey =+  CacheKey Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype Existence =+  Existence Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype NullValue =+  NullValue Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype CutoffFrequency =+  CutoffFrequency Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype Analyzer =+  Analyzer Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype MaxExpansions =+  MaxExpansions Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 'Lenient', if set to true, will cause format based failures to be+    ignored. I don't know what the bloody default is, Elasticsearch+    documentation didn't say what it was. Let me know if you figure it out.+-}+newtype Lenient =+  Lenient Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype Tiebreaker =+  Tiebreaker Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype Boost =+  Boost Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype BoostTerms =+  BoostTerms Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 'MinimumMatch' controls how many should clauses in the bool query should+     match. Can be an absolute value (2) or a percentage (30%) or a+     combination of both.+-}+newtype MinimumMatch =+  MinimumMatch Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype DisableCoord =+  DisableCoord Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype IgnoreTermFrequency =+  IgnoreTermFrequency Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype MinimumTermFrequency =+  MinimumTermFrequency Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype MaxQueryTerms =+  MaxQueryTerms Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype Fuzziness =+  Fuzziness Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 'PrefixLength' is the prefix length used in queries, defaults to 0. -}+newtype PrefixLength =+  PrefixLength Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype TypeName =+  TypeName Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype PercentMatch =+  PercentMatch Double deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype StopWord =+  StopWord Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype QueryPath =+  QueryPath Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 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. -}+newtype AllowLeadingWildcard =+  AllowLeadingWildcard     Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype LowercaseExpanded =+  LowercaseExpanded        Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype EnablePositionIncrements =+  EnablePositionIncrements Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| By default, wildcard terms in a query are not analyzed.+    Setting 'AnalyzeWildcard' to true enables best-effort analysis.+-}+newtype AnalyzeWildcard = AnalyzeWildcard Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 'GeneratePhraseQueries' defaults to false.+-}+newtype GeneratePhraseQueries =+  GeneratePhraseQueries Bool deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 'Locale' is used for string conversions - defaults to ROOT.+-}+newtype Locale        = Locale        Text deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype MaxWordLength = MaxWordLength Int  deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype MinWordLength = MinWordLength Int  deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++{-| 'PhraseSlop' sets the default slop for phrases, 0 means exact+     phrase matches. Default is 0.+-}+newtype PhraseSlop      = PhraseSlop      Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype MinDocFrequency = MinDocFrequency Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)+newtype MaxDocFrequency = MaxDocFrequency Int deriving (Eq, Read, Show, Generic, ToJSON, FromJSON, Typeable)++-- | Newtype wrapper to parse ES's concerning tendency to in some APIs return a floating point number of milliseconds since epoch ಠ_ಠ+newtype POSIXMS = POSIXMS { posixMS :: UTCTime }++{-| 'unpackId' is a silly convenience function that gets used once.+-}+unpackId :: DocId -> Text+unpackId (DocId docId) = docId++type TrackSortScores = Bool+newtype From = From Int deriving (Eq, Read, Show, Generic, ToJSON)+newtype Size = Size Int deriving (Eq, Read, Show, Generic, ToJSON)++data Search = Search { queryBody       :: Maybe Query+                     , filterBody      :: Maybe Filter+                     , sortBody        :: Maybe Sort+                     , aggBody         :: Maybe Aggregations+                     , highlight       :: Maybe Highlights+                       -- default False+                     , trackSortScores :: TrackSortScores+                     , from            :: From+                     , size            :: Size+                     , searchType      :: SearchType+                     , fields          :: Maybe [FieldName]+                     , source          :: Maybe Source } deriving (Eq, Read, Show, Generic, Typeable)++data SearchType = SearchTypeQueryThenFetch+                | SearchTypeDfsQueryThenFetch+                | SearchTypeCount+                | SearchTypeScan+                | SearchTypeQueryAndFetch+                | SearchTypeDfsQueryAndFetch+  deriving (Eq, Read, Show, Generic, Typeable)++data Source =+    NoSource+  | SourcePatterns PatternOrPatterns+  | SourceIncludeExclude Include Exclude+    deriving (Read, Show, Eq, Generic, Typeable)++data PatternOrPatterns = PopPattern   Pattern+                       | PopPatterns [Pattern] deriving (Eq, Read, Show, Generic, Typeable)++data Include = Include [Pattern] deriving (Eq, Read, Show, Generic, Typeable)+data Exclude = Exclude [Pattern] deriving (Eq, Read, Show, Generic, Typeable)++newtype Pattern = Pattern Text deriving (Eq, Read, Show, Generic, Typeable)++data Highlights = Highlights { globalsettings  :: Maybe HighlightSettings+                             , highlightFields :: [FieldHighlight]+                             } deriving (Read, Show, Eq, Generic, Typeable)++data FieldHighlight = FieldHighlight FieldName (Maybe HighlightSettings)+                      deriving (Read, Show, Eq, Generic, Typeable)+++data HighlightSettings = Plain PlainHighlight+                       | Postings PostingsHighlight+                       | FastVector FastVectorHighlight+                         deriving (Read, Show, Eq, Generic, Typeable)+data PlainHighlight =+    PlainHighlight { plainCommon  :: Maybe CommonHighlight+                   , plainNonPost :: Maybe NonPostings } deriving (Read, Show, Eq, Generic, Typeable)++ -- This requires that index_options are set to 'offset' in the mapping.+data PostingsHighlight = PostingsHighlight (Maybe CommonHighlight) deriving (Read, Show, Eq, Generic, Typeable)++-- This requires that term_vector is set to 'with_positions_offsets' in the mapping.+data FastVectorHighlight =+    FastVectorHighlight { fvCommon          :: Maybe CommonHighlight+                        , fvNonPostSettings :: Maybe NonPostings+                        , boundaryChars     :: Maybe Text+                        , boundaryMaxScan   :: Maybe Int+                        , fragmentOffset    :: Maybe Int+                        , matchedFields     :: [Text]+                        , phraseLimit       :: Maybe Int+                        } deriving (Read, Show, Eq, Generic, Typeable)++data CommonHighlight =+    CommonHighlight { order             :: Maybe Text+                    , forceSource       :: Maybe Bool+                    , tag               :: Maybe HighlightTag+                    , encoder           :: Maybe HighlightEncoder+                    , noMatchSize       :: Maybe Int+                    , highlightQuery    :: Maybe Query+                    , requireFieldMatch :: Maybe Bool+                    } deriving (Read, Show, Eq, Generic, Typeable)++-- Settings that are only applicable to FastVector and Plain highlighters.+data NonPostings =+    NonPostings { fragmentSize      :: Maybe Int+                , numberOfFragments :: Maybe Int} deriving (Read, Show, Eq, Generic, Typeable)++data HighlightEncoder = DefaultEncoder+                      | HTMLEncoder+                      deriving (Read, Show, Eq, Generic, Typeable)++-- NOTE: Should the tags use some kind of HTML type, rather than Text?+data HighlightTag = TagSchema Text+                  | CustomTags ([Text], [Text]) -- Only uses more than the first value in the lists if fvh+                  deriving (Read, Show, Eq, Generic, Typeable)+++data Query =+  TermQuery                     Term (Maybe Boost)+  | TermsQuery                  Text (NonEmpty Text)+  | QueryMatchQuery             MatchQuery+  | QueryMultiMatchQuery        MultiMatchQuery+  | QueryBoolQuery              BoolQuery+  | QueryBoostingQuery          BoostingQuery+  | QueryCommonTermsQuery       CommonTermsQuery+  | ConstantScoreFilter         Filter Boost+  | ConstantScoreQuery          Query Boost+  | QueryDisMaxQuery            DisMaxQuery+  | QueryFilteredQuery          FilteredQuery+  | QueryFuzzyLikeThisQuery     FuzzyLikeThisQuery+  | QueryFuzzyLikeFieldQuery    FuzzyLikeFieldQuery+  | QueryFuzzyQuery             FuzzyQuery+  | QueryHasChildQuery          HasChildQuery+  | QueryHasParentQuery         HasParentQuery+  | IdsQuery                    MappingName [DocId]+  | QueryIndicesQuery           IndicesQuery+  | MatchAllQuery               (Maybe Boost)+  | QueryMoreLikeThisQuery      MoreLikeThisQuery+  | QueryMoreLikeThisFieldQuery MoreLikeThisFieldQuery+  | QueryNestedQuery            NestedQuery+  | QueryPrefixQuery            PrefixQuery+  | QueryQueryStringQuery       QueryStringQuery+  | QuerySimpleQueryStringQuery SimpleQueryStringQuery+  | QueryRangeQuery             RangeQuery+  | QueryRegexpQuery            RegexpQuery+  deriving (Eq, Read, Show, Generic, Typeable)++data RegexpQuery =+  RegexpQuery { regexpQueryField :: FieldName+              , regexpQuery      :: Regexp+              , regexpQueryFlags :: RegexpFlags+              , regexpQueryBoost :: Maybe Boost+              } deriving (Eq, Read, Show, Generic, Typeable)++data RangeQuery =+  RangeQuery { rangeQueryField :: FieldName+             , rangeQueryRange :: RangeValue+             , rangeQueryBoost :: Boost } deriving (Eq, Read, Show, Generic, Typeable)++mkRangeQuery :: FieldName -> RangeValue -> RangeQuery+mkRangeQuery f r = RangeQuery f r (Boost 1.0)++data SimpleQueryStringQuery =+  SimpleQueryStringQuery+    { simpleQueryStringQuery             :: QueryString+    , simpleQueryStringField             :: Maybe FieldOrFields+    , simpleQueryStringOperator          :: Maybe BooleanOperator+    , simpleQueryStringAnalyzer          :: Maybe Analyzer+    , simpleQueryStringFlags             :: Maybe (NonEmpty SimpleQueryFlag)+    , simpleQueryStringLowercaseExpanded :: Maybe LowercaseExpanded+    , simpleQueryStringLocale            :: Maybe Locale+    } deriving (Eq, Read, Show, Generic, Typeable)++data SimpleQueryFlag =+  SimpleQueryAll+  | SimpleQueryNone+  | SimpleQueryAnd+  | SimpleQueryOr+  | SimpleQueryPrefix+  | SimpleQueryPhrase+  | SimpleQueryPrecedence+  | SimpleQueryEscape+  | SimpleQueryWhitespace+  | SimpleQueryFuzzy+  | SimpleQueryNear+  | SimpleQuerySlop deriving (Eq, Read, Show, Generic, Typeable)++-- use_dis_max and tie_breaker when fields are plural?+data QueryStringQuery =+  QueryStringQuery+  { queryStringQuery                    :: QueryString+  , queryStringDefaultField             :: Maybe FieldName+  , queryStringOperator                 :: Maybe BooleanOperator+  , queryStringAnalyzer                 :: Maybe Analyzer+  , queryStringAllowLeadingWildcard     :: Maybe AllowLeadingWildcard+  , queryStringLowercaseExpanded        :: Maybe LowercaseExpanded+  , queryStringEnablePositionIncrements :: Maybe EnablePositionIncrements+  , queryStringFuzzyMaxExpansions       :: Maybe MaxExpansions+  , queryStringFuzziness                :: Maybe Fuzziness+  , queryStringFuzzyPrefixLength        :: Maybe PrefixLength+  , queryStringPhraseSlop               :: Maybe PhraseSlop+  , queryStringBoost                    :: Maybe Boost+  , queryStringAnalyzeWildcard          :: Maybe AnalyzeWildcard+  , queryStringGeneratePhraseQueries    :: Maybe GeneratePhraseQueries+  , queryStringMinimumShouldMatch       :: Maybe MinimumMatch+  , queryStringLenient                  :: Maybe Lenient+  , queryStringLocale                   :: Maybe Locale+  } deriving (Eq, Read, Show, Generic, Typeable)++mkQueryStringQuery :: QueryString -> QueryStringQuery+mkQueryStringQuery qs =+  QueryStringQuery qs Nothing Nothing+  Nothing Nothing Nothing Nothing+  Nothing Nothing Nothing Nothing+  Nothing Nothing Nothing Nothing+  Nothing Nothing++data FieldOrFields = FofField   FieldName+                   | FofFields (NonEmpty FieldName) deriving (Eq, Read, Show, Generic, Typeable)++data PrefixQuery =+  PrefixQuery+  { prefixQueryField       :: FieldName+  , prefixQueryPrefixValue :: Text+  , prefixQueryBoost       :: Maybe Boost } deriving (Eq, Read, Show, Generic, Typeable)++data NestedQuery =+  NestedQuery+  { nestedQueryPath      :: QueryPath+  , nestedQueryScoreType :: ScoreType+  , nestedQuery          :: Query } deriving (Eq, Read, Show, Generic, Typeable)++data MoreLikeThisFieldQuery =+  MoreLikeThisFieldQuery+  { moreLikeThisFieldText            :: Text+  , moreLikeThisFieldFields          :: FieldName+                                        -- default 0.3 (30%)+  , moreLikeThisFieldPercentMatch    :: Maybe PercentMatch+  , moreLikeThisFieldMinimumTermFreq :: Maybe MinimumTermFrequency+  , moreLikeThisFieldMaxQueryTerms   :: Maybe MaxQueryTerms+  , moreLikeThisFieldStopWords       :: Maybe (NonEmpty StopWord)+  , moreLikeThisFieldMinDocFrequency :: Maybe MinDocFrequency+  , moreLikeThisFieldMaxDocFrequency :: Maybe MaxDocFrequency+  , moreLikeThisFieldMinWordLength   :: Maybe MinWordLength+  , moreLikeThisFieldMaxWordLength   :: Maybe MaxWordLength+  , moreLikeThisFieldBoostTerms      :: Maybe BoostTerms+  , moreLikeThisFieldBoost           :: Maybe Boost+  , moreLikeThisFieldAnalyzer        :: Maybe Analyzer+  } deriving (Eq, Read, Show, Generic, Typeable)++data MoreLikeThisQuery =+  MoreLikeThisQuery+  { moreLikeThisText            :: Text+  , moreLikeThisFields          :: Maybe (NonEmpty FieldName)+    -- default 0.3 (30%)+  , moreLikeThisPercentMatch    :: Maybe PercentMatch+  , moreLikeThisMinimumTermFreq :: Maybe MinimumTermFrequency+  , moreLikeThisMaxQueryTerms   :: Maybe MaxQueryTerms+  , moreLikeThisStopWords       :: Maybe (NonEmpty StopWord)+  , moreLikeThisMinDocFrequency :: Maybe MinDocFrequency+  , moreLikeThisMaxDocFrequency :: Maybe MaxDocFrequency+  , moreLikeThisMinWordLength   :: Maybe MinWordLength+  , moreLikeThisMaxWordLength   :: Maybe MaxWordLength+  , moreLikeThisBoostTerms      :: Maybe BoostTerms+  , moreLikeThisBoost           :: Maybe Boost+  , moreLikeThisAnalyzer        :: Maybe Analyzer+  } deriving (Eq, Read, Show, Generic, Typeable)++data IndicesQuery =+  IndicesQuery+  { indicesQueryIndices :: [IndexName]+  , indicesQuery        :: Query+    -- default "all"+  , indicesQueryNoMatch :: Maybe Query } deriving (Eq, Read, Show, Generic, Typeable)++data HasParentQuery =+  HasParentQuery+  { hasParentQueryType      :: TypeName+  , hasParentQuery          :: Query+  , hasParentQueryScoreType :: Maybe ScoreType } deriving (Eq, Read, Show, Generic, Typeable)++data HasChildQuery =+  HasChildQuery+  { hasChildQueryType      :: TypeName+  , hasChildQuery          :: Query+  , hasChildQueryScoreType :: Maybe ScoreType } deriving (Eq, Read, Show, Generic, Typeable)++data ScoreType =+  ScoreTypeMax+  | ScoreTypeSum+  | ScoreTypeAvg+  | ScoreTypeNone deriving (Eq, Read, Show, Generic, Typeable)++data FuzzyQuery =+  FuzzyQuery { fuzzyQueryField         :: FieldName+             , fuzzyQueryValue         :: Text+             , fuzzyQueryPrefixLength  :: PrefixLength+             , fuzzyQueryMaxExpansions :: MaxExpansions+             , fuzzyQueryFuzziness     :: Fuzziness+             , fuzzyQueryBoost         :: Maybe Boost+             } deriving (Eq, Read, Show, Generic, Typeable)++data FuzzyLikeFieldQuery =+  FuzzyLikeFieldQuery+  { fuzzyLikeField                    :: FieldName+    -- anaphora is good for the soul.+  , fuzzyLikeFieldText                :: Text+  , fuzzyLikeFieldMaxQueryTerms       :: MaxQueryTerms+  , fuzzyLikeFieldIgnoreTermFrequency :: IgnoreTermFrequency+  , fuzzyLikeFieldFuzziness           :: Fuzziness+  , fuzzyLikeFieldPrefixLength        :: PrefixLength+  , fuzzyLikeFieldBoost               :: Boost+  , fuzzyLikeFieldAnalyzer            :: Maybe Analyzer+  } deriving (Eq, Read, Show, Generic, Typeable)++data FuzzyLikeThisQuery =+  FuzzyLikeThisQuery+  { fuzzyLikeFields              :: [FieldName]+  , fuzzyLikeText                :: Text+  , fuzzyLikeMaxQueryTerms       :: MaxQueryTerms+  , fuzzyLikeIgnoreTermFrequency :: IgnoreTermFrequency+  , fuzzyLikeFuzziness           :: Fuzziness+  , fuzzyLikePrefixLength        :: PrefixLength+  , fuzzyLikeBoost               :: Boost+  , fuzzyLikeAnalyzer            :: Maybe Analyzer+  } deriving (Eq, Read, Show, Generic, Typeable)++data FilteredQuery =+  FilteredQuery+  { filteredQuery  :: Query+  , filteredFilter :: Filter } deriving (Eq, Read, Show, Generic, Typeable)++data DisMaxQuery =+  DisMaxQuery { disMaxQueries    :: [Query]+                -- default 0.0+              , disMaxTiebreaker :: Tiebreaker+              , disMaxBoost      :: Maybe Boost+              } deriving (Eq, Read, Show, Generic, Typeable)++data MatchQuery =+  MatchQuery { matchQueryField           :: FieldName+             , matchQueryQueryString     :: QueryString+             , matchQueryOperator        :: BooleanOperator+             , matchQueryZeroTerms       :: ZeroTermsQuery+             , matchQueryCutoffFrequency :: Maybe CutoffFrequency+             , matchQueryMatchType       :: Maybe MatchQueryType+             , matchQueryAnalyzer        :: Maybe Analyzer+             , matchQueryMaxExpansions   :: Maybe MaxExpansions+             , matchQueryLenient         :: Maybe Lenient+             , matchQueryBoost           :: Maybe Boost } deriving (Eq, Read, Show, Generic, Typeable)++{-| 'mkMatchQuery' is a convenience function that defaults the less common parameters,+    enabling you to provide only the 'FieldName' and 'QueryString' to make a 'MatchQuery'+-}+mkMatchQuery :: FieldName -> QueryString -> MatchQuery+mkMatchQuery field query = MatchQuery field query Or ZeroTermsNone Nothing Nothing Nothing Nothing Nothing Nothing++data MatchQueryType =+  MatchPhrase+  | MatchPhrasePrefix deriving (Eq, Read, Show, Generic, Typeable)++data MultiMatchQuery =+  MultiMatchQuery { multiMatchQueryFields          :: [FieldName]+                  , multiMatchQueryString          :: QueryString+                  , multiMatchQueryOperator        :: BooleanOperator+                  , multiMatchQueryZeroTerms       :: ZeroTermsQuery+                  , multiMatchQueryTiebreaker      :: Maybe Tiebreaker+                  , multiMatchQueryType            :: Maybe MultiMatchQueryType+                  , multiMatchQueryCutoffFrequency :: Maybe CutoffFrequency+                  , multiMatchQueryAnalyzer        :: Maybe Analyzer+                  , multiMatchQueryMaxExpansions   :: Maybe MaxExpansions+                  , multiMatchQueryLenient         :: Maybe Lenient } deriving (Eq, Read, Show, Generic, Typeable)++{-| 'mkMultiMatchQuery' is a convenience function that defaults the less common parameters,+    enabling you to provide only the list of 'FieldName's and 'QueryString' to+    make a 'MultiMatchQuery'.+-}++mkMultiMatchQuery :: [FieldName] -> QueryString -> MultiMatchQuery+mkMultiMatchQuery matchFields query =+  MultiMatchQuery matchFields query+  Or ZeroTermsNone Nothing Nothing Nothing Nothing Nothing Nothing++data MultiMatchQueryType =+  MultiMatchBestFields+  | MultiMatchMostFields+  | MultiMatchCrossFields+  | MultiMatchPhrase+  | MultiMatchPhrasePrefix deriving (Eq, Read, Show, Generic, Typeable)++data BoolQuery =+  BoolQuery { boolQueryMustMatch          :: [Query]+            , boolQueryMustNotMatch       :: [Query]+            , boolQueryShouldMatch        :: [Query]+            , boolQueryMinimumShouldMatch :: Maybe MinimumMatch+            , boolQueryBoost              :: Maybe Boost+            , boolQueryDisableCoord       :: Maybe DisableCoord+            } deriving (Eq, Read, Show, Generic, Typeable)++mkBoolQuery :: [Query] -> [Query] -> [Query] -> BoolQuery+mkBoolQuery must mustNot should =+  BoolQuery must mustNot should Nothing Nothing Nothing++data BoostingQuery =+  BoostingQuery { positiveQuery :: Query+                , negativeQuery :: Query+                , negativeBoost :: Boost } deriving (Eq, Read, Show, Generic, Typeable)++data CommonTermsQuery =+  CommonTermsQuery { commonField              :: FieldName+                   , commonQuery              :: QueryString+                   , commonCutoffFrequency    :: CutoffFrequency+                   , commonLowFreqOperator    :: BooleanOperator+                   , commonHighFreqOperator   :: BooleanOperator+                   , commonMinimumShouldMatch :: Maybe CommonMinimumMatch+                   , commonBoost              :: Maybe Boost+                   , commonAnalyzer           :: Maybe Analyzer+                   , commonDisableCoord       :: Maybe DisableCoord+                   } deriving (Eq, Read, Show, Generic, Typeable)++data CommonMinimumMatch =+    CommonMinimumMatchHighLow MinimumMatchHighLow+  | CommonMinimumMatch        MinimumMatch+  deriving (Eq, Read, Show, Generic, Typeable)++data MinimumMatchHighLow =+  MinimumMatchHighLow { lowFreq  :: MinimumMatch+                      , highFreq :: MinimumMatch } deriving (Eq, Read, Show, Generic, Typeable)++data Filter = AndFilter [Filter] Cache+            | OrFilter  [Filter] Cache+            | NotFilter  Filter  Cache+            | IdentityFilter+            | BoolFilter BoolMatch+            | ExistsFilter FieldName -- always cached+            | GeoBoundingBoxFilter GeoBoundingBoxConstraint+            | GeoDistanceFilter GeoPoint Distance DistanceType OptimizeBbox Cache+            | GeoDistanceRangeFilter GeoPoint DistanceRange+            | GeoPolygonFilter FieldName [LatLon]+            | IdsFilter MappingName [DocId]+            | LimitFilter Int+            | MissingFilter FieldName Existence NullValue+            | PrefixFilter  FieldName PrefixValue Cache+            | QueryFilter   Query Cache+            | RangeFilter   FieldName RangeValue RangeExecution Cache+            | RegexpFilter  FieldName Regexp RegexpFlags CacheName Cache CacheKey+            | TermFilter    Term Cache+              deriving (Eq, Read, Show, Generic, Typeable)++data ZeroTermsQuery = ZeroTermsNone+                    | ZeroTermsAll deriving (Eq, Read, Show, Generic, Typeable)++data RangeExecution = RangeExecutionIndex+                    | RangeExecutionFielddata deriving (Eq, Read, Show, Generic, Typeable)++newtype Regexp = Regexp Text deriving (Eq, Read, Show, Generic, Typeable, FromJSON)++data RegexpFlags = AllRegexpFlags+                 | NoRegexpFlags+                 | SomeRegexpFlags (NonEmpty RegexpFlag) deriving (Eq, Read, Show, Generic, Typeable)++data RegexpFlag = AnyString+                | Automaton+                | Complement+                | Empty+                | Intersection+                | Interval deriving (Eq, Read, Show, Generic, Typeable)++newtype LessThan = LessThan Double deriving (Eq, Read, Show, Generic, Typeable)+newtype LessThanEq = LessThanEq Double deriving (Eq, Read, Show, Generic, Typeable)+newtype GreaterThan = GreaterThan Double deriving (Eq, Read, Show, Generic, Typeable)+newtype GreaterThanEq = GreaterThanEq Double deriving (Eq, Read, Show, Generic, Typeable)++newtype LessThanD = LessThanD UTCTime deriving (Eq, Read, Show, Generic, Typeable)+newtype LessThanEqD = LessThanEqD UTCTime deriving (Eq, Read, Show, Generic, Typeable)+newtype GreaterThanD = GreaterThanD UTCTime deriving (Eq, Read, Show, Generic, Typeable)+newtype GreaterThanEqD = GreaterThanEqD UTCTime deriving (Eq, Read, Show, Generic, Typeable)++data RangeValue = RangeDateLte LessThanEqD+                | RangeDateLt LessThanD+                | RangeDateGte GreaterThanEqD+                | RangeDateGt GreaterThanD+                | RangeDateGtLt GreaterThanD LessThanD+                | RangeDateGteLte GreaterThanEqD LessThanEqD+                | RangeDateGteLt GreaterThanEqD LessThanD+                | RangeDateGtLte GreaterThanD LessThanEqD+                | RangeDoubleLte LessThanEq+                | RangeDoubleLt LessThan+                | RangeDoubleGte GreaterThanEq+                | RangeDoubleGt GreaterThan+                | RangeDoubleGtLt GreaterThan LessThan+                | RangeDoubleGteLte GreaterThanEq LessThanEq+                | RangeDoubleGteLt GreaterThanEq LessThan+                | RangeDoubleGtLte GreaterThan LessThanEq+                deriving (Eq, Read, Show, Generic, Typeable)++rangeValueToPair :: RangeValue -> [Pair]+rangeValueToPair rv = case rv of+  RangeDateLte (LessThanEqD t)                       -> ["lte" .= t]+  RangeDateGte (GreaterThanEqD t)                    -> ["gte" .= t]+  RangeDateLt (LessThanD t)                          -> ["lt"  .= t]+  RangeDateGt (GreaterThanD t)                       -> ["gt"  .= t]+  RangeDateGteLte (GreaterThanEqD l) (LessThanEqD g) -> ["gte" .= l, "lte" .= g]+  RangeDateGtLte (GreaterThanD l) (LessThanEqD g)    -> ["gt"  .= l, "lte" .= g]+  RangeDateGteLt (GreaterThanEqD l) (LessThanD g)    -> ["gte" .= l, "lt"  .= g]+  RangeDateGtLt (GreaterThanD l) (LessThanD g)       -> ["gt"  .= l, "lt"  .= g]+  RangeDoubleLte (LessThanEq t)                      -> ["lte" .= t]+  RangeDoubleGte (GreaterThanEq t)                   -> ["gte" .= t]+  RangeDoubleLt (LessThan t)                         -> ["lt"  .= t]+  RangeDoubleGt (GreaterThan t)                      -> ["gt"  .= t]+  RangeDoubleGteLte (GreaterThanEq l) (LessThanEq g) -> ["gte" .= l, "lte" .= g]+  RangeDoubleGtLte (GreaterThan l) (LessThanEq g)    -> ["gt"  .= l, "lte" .= g]+  RangeDoubleGteLt (GreaterThanEq l) (LessThan g)    -> ["gte" .= l, "lt"  .= g]+  RangeDoubleGtLt (GreaterThan l) (LessThan g)       -> ["gt"  .= l, "lt"  .= g]++data Term = Term { termField :: Text+                 , termValue :: Text } deriving (Eq, Read, Show, Generic, Typeable)++data BoolMatch = MustMatch    Term  Cache+               | MustNotMatch Term  Cache+               | ShouldMatch [Term] Cache deriving (Eq, Read, Show, Generic, Typeable)++-- "memory" or "indexed"+data GeoFilterType = GeoFilterMemory+                   | GeoFilterIndexed deriving (Eq, Read, Show, Generic, Typeable)++data LatLon = LatLon { lat :: Double+                     , lon :: Double } deriving (Eq, Read, Show, Generic, Typeable)++data GeoBoundingBox =+  GeoBoundingBox { topLeft     :: LatLon+                 , bottomRight :: LatLon } deriving (Eq, Read, Show, Generic, Typeable)++data GeoBoundingBoxConstraint =+  GeoBoundingBoxConstraint { geoBBField        :: FieldName+                           , constraintBox     :: GeoBoundingBox+                           , bbConstraintcache :: Cache+                           , geoType           :: GeoFilterType+                           } deriving (Eq, Read, Show, Generic, Typeable)++data GeoPoint =+  GeoPoint { geoField :: FieldName+           , latLon   :: LatLon} deriving (Eq, Read, Show, Generic, Typeable)++data DistanceUnit = Miles+                  | Yards+                  | Feet+                  | Inches+                  | Kilometers+                  | Meters+                  | Centimeters+                  | Millimeters+                  | NauticalMiles deriving (Eq, Read, Show, Generic, Typeable)++data DistanceType = Arc+                  | SloppyArc -- doesn't exist <1.0+                  | Plane deriving (Eq, Read, Show, Generic, Typeable)++data OptimizeBbox = OptimizeGeoFilterType GeoFilterType+                  | NoOptimizeBbox deriving (Eq, Read, Show, Generic, Typeable)++data Distance =+  Distance { coefficient :: Double+           , unit        :: DistanceUnit } deriving (Eq, Read, Show, Generic, Typeable)++data DistanceRange =+  DistanceRange { distanceFrom :: Distance+                , distanceTo   :: Distance } deriving (Eq, Read, Show, Generic, Typeable)++data SearchResult a =+  SearchResult { took         :: Int+               , timedOut     :: Bool+               , shards       :: ShardResult+               , searchHits   :: SearchHits a+               , aggregations :: Maybe AggregationResults+               , scrollId     :: Maybe ScrollId } deriving (Eq, Read, Show, Generic, Typeable)++newtype ScrollId = ScrollId Text deriving (Eq, Read, Show, Generic, Ord, ToJSON, FromJSON)++type Score = Maybe Double++data SearchHits a =+  SearchHits { hitsTotal :: Int+             , maxScore  :: Score+             , hits      :: [Hit a] } deriving (Eq, Read, Show, Generic, Typeable)+++instance Monoid (SearchHits a) where+  mempty = SearchHits 0 Nothing mempty+  mappend (SearchHits ta ma ha) (SearchHits tb mb hb) =+    SearchHits (ta + tb) (max ma mb) (ha <> hb)+++data Hit a =+  Hit { hitIndex     :: IndexName+      , hitType      :: MappingName+      , hitDocId     :: DocId+      , hitScore     :: Score+      , hitSource    :: Maybe a+      , hitHighlight :: Maybe HitHighlight } deriving (Eq, Read, Show, Generic, Typeable)++data ShardResult =+  ShardResult { shardTotal       :: Int+              , shardsSuccessful :: Int+              , shardsFailed     :: Int } deriving (Eq, Read, Show, Generic, Typeable)++type HitHighlight = M.Map Text [Text]++showText :: Show a => a -> Text+showText = T.pack . show++readMay :: Read a => String -> Maybe a+readMay s = case reads s of+              (a, ""):_ -> Just a+              _ -> Nothing++parseReadText :: Read a => Text -> Parser a+parseReadText = maybe mzero return . readMay . T.unpack++type Aggregations = M.Map Text Aggregation++emptyAggregations :: Aggregations+emptyAggregations = M.empty++mkAggregations :: Text -> Aggregation -> Aggregations+mkAggregations name aggregation = M.insert name aggregation emptyAggregations++data TermOrder = TermOrder{ termSortField :: Text+                          , termSortOrder :: SortOrder } deriving (Eq, Read, Show, Generic, Typeable)++data TermInclusion = TermInclusion Text+                   | TermPattern Text Text deriving (Eq, Read, Show, Generic, Typeable)++data CollectionMode = BreadthFirst+                    | DepthFirst deriving (Eq, Read, Show, Generic, Typeable)++data ExecutionHint = Ordinals+                   | GlobalOrdinals+                   | GlobalOrdinalsHash+                   | GlobalOrdinalsLowCardinality+                   | Map deriving (Eq, Read, Show, Generic, Typeable)++data TimeInterval = Weeks+                  | Days+                  | Hours+                  | Minutes+                  | Seconds deriving Eq++data Interval = Year+              | Quarter+              | Month+              | Week+              | Day+              | Hour+              | Minute+              | Second+              | FractionalInterval Float TimeInterval deriving (Eq, Read, Show, Generic, Typeable)++data Aggregation = TermsAgg TermsAggregation+                 | CardinalityAgg CardinalityAggregation+                 | DateHistogramAgg DateHistogramAggregation+                 | ValueCountAgg ValueCountAggregation+                 | FilterAgg FilterAggregation+                 | DateRangeAgg DateRangeAggregation+                 | MissingAgg MissingAggregation deriving (Eq, Read, Show, Generic, Typeable)++data MissingAggregation = MissingAggregation+  { maField :: Text+  } deriving (Eq, Read, Show, Generic, Typeable)++data TermsAggregation = TermsAggregation { term              :: Either Text Text+                                         , termInclude       :: Maybe TermInclusion+                                         , termExclude       :: Maybe TermInclusion+                                         , termOrder         :: Maybe TermOrder+                                         , termMinDocCount   :: Maybe Int+                                         , termSize          :: Maybe Int+                                         , termShardSize     :: Maybe Int+                                         , termCollectMode   :: Maybe CollectionMode+                                         , termExecutionHint :: Maybe ExecutionHint+                                         , termAggs          :: Maybe Aggregations+                                    } deriving (Eq, Read, Show, Generic, Typeable)++data CardinalityAggregation = CardinalityAggregation { cardinalityField   :: FieldName,+                                                       precisionThreshold :: Maybe Int+                                                     } deriving (Eq, Read, Show, Generic, Typeable)++data DateHistogramAggregation = DateHistogramAggregation { dateField      :: FieldName+                                                         , dateInterval   :: Interval+                                                         , dateFormat     :: Maybe Text+                                                         -- pre and post deprecated in 1.5+                                                         , datePreZone    :: Maybe Text+                                                         , datePostZone   :: Maybe Text+                                                         , datePreOffset  :: Maybe Text+                                                         , datePostOffset :: Maybe Text+                                                         , dateAggs       :: Maybe Aggregations+                                                         } deriving (Eq, Read, Show, Generic, Typeable)+++data DateRangeAggregation = DateRangeAggregation { draField  :: FieldName+                                                 , draFormat :: Maybe Text+                                                 , draRanges :: NonEmpty DateRangeAggRange+                                                 } deriving (Eq, Read, Show, Generic, Typeable)++data DateRangeAggRange = DateRangeFrom DateMathExpr+                       | DateRangeTo DateMathExpr+                       | DateRangeFromAndTo DateMathExpr DateMathExpr deriving (Eq, Read, Show, Generic, Typeable)++-- | See <https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#date-math> for more information.+data DateMathExpr = DateMathExpr DateMathAnchor [DateMathModifier] deriving (Eq, Read, Show, Generic, Typeable)+++-- | Starting point for a date range. This along with the 'DateMathModifiers' gets you the date ES will start from.+data DateMathAnchor = DMNow+                    | DMDate Day deriving (Eq, Read, Show, Generic, Typeable)++data DateMathModifier = AddTime Int DateMathUnit+                      | SubtractTime Int DateMathUnit+                      | RoundDownTo DateMathUnit deriving (Eq, Read, Show, Generic, Typeable)++data DateMathUnit = DMYear+                  | DMMonth+                  | DMWeek+                  | DMDay+                  | DMHour+                  | DMMinute+                  | DMSecond deriving (Eq, Read, Show, Generic, Typeable)++-- | See <https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html> for more information.+data ValueCountAggregation = FieldValueCount FieldName+                           | ScriptValueCount Script deriving (Eq, Read, Show, Generic, Typeable)++-- | Single-bucket filter aggregations. See <https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html#search-aggregations-bucket-filter-aggregation> for more information.+data FilterAggregation = FilterAggregation { faFilter :: Filter+                                           , faAggs   :: Maybe Aggregations} deriving (Eq, Read, Show, Generic, Typeable)++mkTermsAggregation :: Text -> TermsAggregation+mkTermsAggregation t = TermsAggregation (Left t) Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing++mkTermsScriptAggregation :: Text -> TermsAggregation+mkTermsScriptAggregation t = TermsAggregation (Right t) Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing++mkDateHistogram :: FieldName -> Interval -> DateHistogramAggregation+mkDateHistogram t i = DateHistogramAggregation t i Nothing Nothing Nothing Nothing Nothing Nothing++mkCardinalityAggregation :: FieldName -> CardinalityAggregation+mkCardinalityAggregation t = CardinalityAggregation t Nothing++instance ToJSON Version where+  toJSON Version {..} = object ["number" .= number+                               ,"build_hash" .= build_hash+                               ,"build_timestamp" .= build_timestamp+                               ,"build_snapshot" .= build_snapshot+                               ,"lucene_version" .= lucene_version]++instance FromJSON Version where+  parseJSON = withObject "Version" parse+    where parse o = Version+                    <$> o .: "number"+                    <*> o .: "build_hash"+                    <*> o .: "build_timestamp"+                    <*> o .: "build_snapshot"+                    <*> o .: "lucene_version"++instance ToJSON VersionNumber where+  toJSON = toJSON . Vers.showVersion . versionNumber++instance FromJSON VersionNumber where+  parseJSON = withText "VersionNumber" (parse . T.unpack)+    where+      parse s = case filter (null . snd)(RP.readP_to_S Vers.parseVersion s) of+                  [(v, _)] -> pure (VersionNumber v)+                  [] -> fail ("Invalid version string " ++ s)+                  xs -> fail ("Ambiguous version string " ++ s ++ " (" ++ intercalate ", " (Vers.showVersion . fst <$> xs) ++ ")")++instance ToJSON TermOrder where+  toJSON (TermOrder termSortField termSortOrder) = object [termSortField .= termSortOrder]++instance ToJSON TermInclusion where+  toJSON (TermInclusion x) = toJSON x+  toJSON (TermPattern pattern flags) = omitNulls [ "pattern" .= pattern,+                                                     "flags"   .= flags]++instance ToJSON CollectionMode where+  toJSON BreadthFirst = "breadth_first"+  toJSON DepthFirst   = "depth_first"++instance ToJSON ExecutionHint where+  toJSON Ordinals                     = "ordinals"+  toJSON GlobalOrdinals               = "global_ordinals"+  toJSON GlobalOrdinalsHash           = "global_ordinals_hash"+  toJSON GlobalOrdinalsLowCardinality = "global_ordinals_low_cardinality"+  toJSON Map                          = "map"++instance ToJSON Interval where+  toJSON Year = "year"+  toJSON Quarter = "quarter"+  toJSON Month = "month"+  toJSON Week = "week"+  toJSON Day = "day"+  toJSON Hour = "hour"+  toJSON Minute = "minute"+  toJSON Second = "second"+  toJSON (FractionalInterval fraction interval) = toJSON $ show fraction ++ show interval++instance Show TimeInterval where+  show Weeks    = "w"+  show Days     = "d"+  show Hours    = "h"+  show Minutes  = "m"+  show Seconds  = "s"++instance Read TimeInterval where+  readPrec = f =<< TR.get+    where+      f 'w' = return Weeks+      f 'd' = return Days+      f 'h' = return Hours+      f 'm' = return Minutes+      f 's' = return Seconds+      f  _  = fail "TimeInterval expected one of w, d, h, m, s"++instance ToJSON Aggregation where+  toJSON (TermsAgg (TermsAggregation term include exclude order minDocCount size shardSize collectMode executionHint termAggs)) =+    omitNulls ["terms" .= omitNulls [ toJSON' term,+                                      "include"        .= include,+                                      "exclude"        .= exclude,+                                      "order"          .= order,+                                      "min_doc_count"  .= minDocCount,+                                      "size"           .= size,+                                      "shard_size"     .= shardSize,+                                      "collect_mode"   .= collectMode,+                                      "execution_hint" .= executionHint+                                    ],+               "aggs"  .= termAggs ]+    where+      toJSON' x = case x of { Left y -> "field" .= y;  Right y -> "script" .= y }++  toJSON (CardinalityAgg (CardinalityAggregation field precisionThreshold)) =+    object ["cardinality" .= omitNulls [ "field"              .= field,+                                         "precisionThreshold" .= precisionThreshold+                                       ]+           ]++  toJSON (DateHistogramAgg (DateHistogramAggregation field interval format preZone postZone preOffset postOffset dateHistoAggs)) =+    omitNulls ["date_histogram" .= omitNulls [ "field"       .= field,+                                               "interval"    .= interval,+                                               "format"      .= format,+                                               "pre_zone"    .= preZone,+                                               "post_zone"   .= postZone,+                                               "pre_offset"  .= preOffset,+                                               "post_offset" .= postOffset+                                             ],+               "aggs"           .= dateHistoAggs ]+  toJSON (ValueCountAgg a) = object ["value_count" .= v]+    where v = case a of+                (FieldValueCount (FieldName n)) -> object ["field" .= n]+                (ScriptValueCount (Script s))   -> object ["script" .= s]+  toJSON (FilterAgg (FilterAggregation filt ags)) =+    omitNulls [ "filter" .= filt+              , "aggs" .= ags]+  toJSON (DateRangeAgg a) = object [ "date_range" .= a+                                   ]+  toJSON (MissingAgg (MissingAggregation{..})) =+    object ["missing" .= object ["field" .= maField]]++instance ToJSON DateRangeAggregation where+  toJSON DateRangeAggregation {..} =+    omitNulls [ "field" .= draField+              , "format" .= draFormat+              , "ranges" .= toList draRanges+              ]++instance ToJSON DateRangeAggRange where+  toJSON (DateRangeFrom e) = object [ "from" .= e ]+  toJSON (DateRangeTo e) = object [ "to" .= e ]+  toJSON (DateRangeFromAndTo f t) = object [ "from" .= f, "to" .= t ]++instance ToJSON DateMathExpr where+  toJSON (DateMathExpr a mods) = String (fmtA a <> mconcat (fmtMod <$> mods))+    where fmtA DMNow = "now"+          fmtA (DMDate date) = (T.pack $ showGregorian date) <> "||"+          fmtMod (AddTime n u) = "+" <> showText n <> fmtU u+          fmtMod (SubtractTime n u) = "-" <> showText n <> fmtU u+          fmtMod (RoundDownTo u) = "/" <> fmtU u+          fmtU DMYear = "y"+          fmtU DMMonth = "M"+          fmtU DMWeek = "w"+          fmtU DMDay = "d"+          fmtU DMHour = "h"+          fmtU DMMinute = "m"+          fmtU DMSecond = "s"+++type AggregationResults = M.Map Text Value++class BucketAggregation a where+  key :: a -> BucketValue+  docCount :: a -> Int+  aggs :: a -> Maybe AggregationResults+++data Bucket a = Bucket { buckets :: [a]} deriving (Read, Show)++data BucketValue = TextValue Text+                 | ScientificValue Scientific+                 | BoolValue Bool deriving (Read, Show)++data MissingResult = MissingResult { missingDocCount :: Int } deriving (Show)++data TermsResult = TermsResult { termKey       :: BucketValue+                               , termsDocCount :: Int+                               , termsAggs     :: Maybe AggregationResults } deriving (Read, Show)++data DateHistogramResult = DateHistogramResult { dateKey           :: Int+                                               , dateKeyStr        :: Maybe Text+                                               , dateDocCount      :: Int+                                               , dateHistogramAggs :: Maybe AggregationResults } deriving (Read, Show)++data DateRangeResult = DateRangeResult { dateRangeKey          :: Text+                                       , dateRangeFrom         :: Maybe UTCTime+                                       , dateRangeFromAsString :: Maybe Text+                                       , dateRangeTo           :: Maybe UTCTime+                                       , dateRangeToAsString   :: Maybe Text+                                       , dateRangeDocCount     :: Int+                                       , dateRangeAggs         :: Maybe AggregationResults } deriving (Read, Show, Eq, Generic, Typeable)++toTerms :: Text -> AggregationResults ->  Maybe (Bucket TermsResult)+toTerms = toAggResult++toDateHistogram :: Text -> AggregationResults -> Maybe (Bucket DateHistogramResult)+toDateHistogram = toAggResult++toMissing :: Text -> AggregationResults -> Maybe MissingResult+toMissing = toAggResult++toAggResult :: (FromJSON a) => Text -> AggregationResults -> Maybe a+toAggResult t a = M.lookup t a >>= deserialize+  where deserialize = parseMaybe parseJSON++instance BucketAggregation TermsResult where+  key = termKey+  docCount = termsDocCount+  aggs = termsAggs++instance BucketAggregation DateHistogramResult where+  key = TextValue . showText . dateKey+  docCount = dateDocCount+  aggs = dateHistogramAggs++instance BucketAggregation DateRangeResult where+  key = TextValue . dateRangeKey+  docCount = dateRangeDocCount+  aggs = dateRangeAggs++instance (FromJSON a, BucketAggregation a) => FromJSON (Bucket a) where+  parseJSON (Object v) = Bucket <$>+                         v .: "buckets"+  parseJSON _ = mempty++instance FromJSON BucketValue where+  parseJSON (String t) = return $ TextValue t+  parseJSON (Number s) = return $ ScientificValue s+  parseJSON (Bool b) = return $ BoolValue b+  parseJSON _ = mempty++instance FromJSON MissingResult where+  parseJSON = withObject "MissingResult" parse+    where parse v = MissingResult <$> v .: "doc_count"++instance FromJSON TermsResult where+  parseJSON (Object v) = TermsResult <$>+                         v .:   "key"       <*>+                         v .:   "doc_count" <*>+                         v .:?  "aggregations"+  parseJSON _ = mempty++instance FromJSON DateHistogramResult where+  parseJSON (Object v) = DateHistogramResult   <$>+                         v .:  "key"           <*>+                         v .:? "key_as_string" <*>+                         v .:  "doc_count"     <*>+                         v .:? "aggregations"+  parseJSON _ = mempty++instance FromJSON DateRangeResult where+  parseJSON = withObject "DateRangeResult" parse+    where parse v = DateRangeResult                 <$>+                    v .:  "key"                     <*>+                    (fmap posixMS <$> v .:? "from") <*>+                    v .:? "from_as_string"          <*>+                    (fmap posixMS <$> v .:? "to")   <*>+                    v .:? "to_as_string"            <*>+                    v .:  "doc_count"               <*>+                    v .:? "aggregations"++instance FromJSON POSIXMS where+  parseJSON = withScientific "POSIXMS" (return . parse)+    where parse n = let n' = truncate n :: Integer+                    in POSIXMS (posixSecondsToUTCTime (fromInteger (n' `div` 1000)))++instance Monoid Filter where+  mempty = IdentityFilter+  mappend a b = AndFilter [a, b] defaultCache++instance Seminearring Filter where+  a <||> b = OrFilter [a, b] defaultCache++instance ToJSON Filter where+  toJSON (AndFilter filters cache) =+    object ["and" .=+            object [ "filters" .= fmap toJSON filters+                   , "_cache"  .= cache]]++  toJSON (OrFilter filters cache) =+    object ["or" .=+            object [ "filters" .= fmap toJSON filters+                   , "_cache"  .= cache]]++  toJSON (NotFilter notFilter cache) =+    object ["not" .=+            object ["filter"  .= notFilter+                   , "_cache" .= cache]]++  toJSON (IdentityFilter) =+    object ["match_all" .= object []]++  toJSON (TermFilter (Term termFilterField termFilterValue) cache) =+    object ["term" .= object base]+    where base = [termFilterField .= termFilterValue,+                  "_cache"        .= cache]++  toJSON (ExistsFilter (FieldName fieldName)) =+    object ["exists"  .= object+            ["field"  .= fieldName]]++  toJSON (BoolFilter boolMatch) =+    object ["bool"    .= boolMatch]++  toJSON (GeoBoundingBoxFilter bbConstraint) =+    object ["geo_bounding_box" .= bbConstraint]++  toJSON (GeoDistanceFilter (GeoPoint (FieldName distanceGeoField) geoDistLatLon)+          distance distanceType optimizeBbox cache) =+    object ["geo_distance" .=+            object ["distance" .= distance+                   , "distance_type" .= distanceType+                   , "optimize_bbox" .= optimizeBbox+                   , distanceGeoField .= geoDistLatLon+                   , "_cache" .= cache]]++  toJSON (GeoDistanceRangeFilter (GeoPoint (FieldName gddrField) drLatLon)+          (DistanceRange geoDistRangeDistFrom drDistanceTo)) =+    object ["geo_distance_range" .=+            object ["from" .= geoDistRangeDistFrom+                   , "to"  .= drDistanceTo+                   , gddrField .= drLatLon]]++  toJSON (GeoPolygonFilter (FieldName geoPolygonFilterField) latLons) =+    object ["geo_polygon" .=+            object [geoPolygonFilterField .=+                    object ["points" .= fmap toJSON latLons]]]++  toJSON (IdsFilter (MappingName mappingName) values) =+    object ["ids" .=+            object ["type" .= mappingName+                   , "values" .= fmap unpackId values]]++  toJSON (LimitFilter limit) =+    object ["limit" .= object ["value" .= limit]]++  toJSON (MissingFilter (FieldName fieldName) (Existence existence) (NullValue nullValue)) =+    object ["missing" .=+            object ["field"       .= fieldName+                   , "existence"  .= existence+                   , "null_value" .= nullValue]]++  toJSON (PrefixFilter (FieldName fieldName) fieldValue cache) =+    object ["prefix" .=+            object [fieldName .= fieldValue+                   , "_cache" .= cache]]++  toJSON (QueryFilter query False) =+    object ["query" .= toJSON query ]+  toJSON (QueryFilter query True) =+    object ["fquery" .=+            object [ "query"  .= toJSON query+                   , "_cache" .= True ]]++  toJSON (RangeFilter (FieldName fieldName) rangeValue rangeExecution cache) =+    object ["range" .=+            object [ fieldName .= object (rangeValueToPair rangeValue)+                   , "execution" .= rangeExecution+                   , "_cache" .= cache]]++  toJSON (RegexpFilter (FieldName fieldName)+          (Regexp regexText) flags (CacheName cacheName) cache (CacheKey cacheKey)) =+    object ["regexp" .=+            object [fieldName .=+                    object ["value"  .= regexText+                           , "flags" .= flags]+                   , "_name"      .= cacheName+                   , "_cache"     .= cache+                   , "_cache_key" .= cacheKey]]++instance FromJSON Filter where+  parseJSON = withObject "Filter" parse+    where parse o = andFilter `taggedWith` "and"+                <|> orFilter `taggedWith` "or"+                <|> notFilter `taggedWith` "not"+                <|> identityFilter `taggedWith` "match_all"+                <|> boolFilter `taggedWith` "bool"+                <|> existsFilter `taggedWith` "exists"+                <|> geoBoundingBoxFilter `taggedWith` "geo_bounding_box"+                <|> geoDistanceFilter `taggedWith` "geo_distance"+                <|> geoDistanceRangeFilter `taggedWith` "geo_distance_range"+                <|> geoPolygonFilter `taggedWith` "geo_polygon"+                <|> idsFilter `taggedWith` "ids"+                <|> limitFilter `taggedWith` "limit"+                <|> missingFilter `taggedWith` "missing"+                <|> prefixFilter `taggedWith` "prefix"+                <|> queryFilter `taggedWith` "query"+                <|> fqueryFilter `taggedWith` "fquery"+                <|> rangeFilter `taggedWith` "range"+                <|> regexpFilter `taggedWith` "regexp"+                <|> termFilter `taggedWith` "term"+            where taggedWith parser k = parser =<< o .: k+          andFilter o = AndFilter <$> o .: "filters"+                                  <*> o .:? "_cache" .!= defaultCache+          orFilter o = OrFilter <$> o .: "filters"+                                <*> o .:? "_cache" .!= defaultCache+          notFilter o = NotFilter <$> o .: "filter"+                                  <*> o .: "_cache" .!= defaultCache+          identityFilter :: Object -> Parser Filter+          identityFilter m+            | HM.null m = pure IdentityFilter+            | otherwise = fail ("Identityfilter expected empty object but got " <> show m)+          boolFilter = pure . BoolFilter+          existsFilter o = ExistsFilter <$> o .: "field"+          geoBoundingBoxFilter = pure . GeoBoundingBoxFilter+          geoDistanceFilter o = do+            case HM.toList (deleteSeveral ["distance", "distance_type", "optimize_bbox", "_cache"] o) of+              [(fn, v)] -> do+                gp <- GeoPoint (FieldName fn) <$> parseJSON v+                GeoDistanceFilter gp <$> o .: "distance"+                                     <*> o .: "distance_type"+                                     <*> o .: "optimize_bbox"+                                     <*> o .:? "_cache" .!= defaultCache+              _ -> fail "Could not find GeoDistanceFilter field name"+          geoDistanceRangeFilter o = do+            case HM.toList (deleteSeveral ["from", "to"] o) of+              [(fn, v)] -> do+                gp <- GeoPoint (FieldName fn) <$> parseJSON v+                rng <- DistanceRange <$> o .: "from" <*> o .: "to"+                return (GeoDistanceRangeFilter gp rng)+              _ -> fail "Could not find GeoDistanceRangeFilter field name"+          geoPolygonFilter = fieldTagged $ \fn o -> GeoPolygonFilter fn <$> o .: "points"+          idsFilter o = IdsFilter <$> o .: "type"+                                  <*> o .: "values"+          limitFilter o = LimitFilter <$> o .: "value"+          missingFilter o = MissingFilter <$> o .: "field"+                                          <*> o .: "existence"+                                          <*> o .: "null_value"+          prefixFilter o = case HM.toList (HM.delete "_cache" o) of+                             [(fn, String v)] -> PrefixFilter (FieldName fn) v <$> o .:? "_cache" .!= defaultCache+                             _ -> fail "Could not parse PrefixFilter"++          queryFilter q = pure (QueryFilter q False)+          fqueryFilter o = QueryFilter <$> o .: "query" <*> pure True+          rangeFilter o = case HM.toList (deleteSeveral ["execution", "_cache"] o) of+                            [(fn, v)] -> RangeFilter (FieldName fn)+                                         <$> parseJSON v+                                         <*> o .: "execution"+                                         <*> o .:? "_cache" .!= defaultCache+                            _ -> fail "Could not find field name for RangeFilter"+          regexpFilter o = case HM.toList (deleteSeveral ["_name", "_cache", "_cache_key"] o) of+                              [(fn, Object o')] -> RegexpFilter (FieldName fn)+                                                   <$> o' .: "value"+                                                   <*> o' .: "flags"+                                                   <*> o .: "_name"+                                                   <*> o .:? "_cache" .!= defaultCache+                                                   <*> o .: "_cache_key"+                              _ -> fail "Could not find field name for RegexpFilter"+          termFilter o = case HM.toList (HM.delete "_cache" o) of+                         [(termField, String termVal)] -> TermFilter (Term termField termVal)+                                                          <$> o .:? "_cache" .!= defaultCache+                         _ -> fail "Could not find term field for TermFilter"++fieldTagged :: Monad m => (FieldName -> Object -> m a) -> Object -> m a+fieldTagged f o = case HM.toList o of+                    [(k, Object o')] -> f (FieldName k) o'+                    _ -> fail "Expected object with 1 field-named key"++instance ToJSON GeoPoint where+  toJSON (GeoPoint (FieldName geoPointField) geoPointLatLon) =+    object [ geoPointField  .= geoPointLatLon ]+++instance ToJSON Query where+  toJSON (TermQuery (Term termQueryField termQueryValue) boost) =+    object [ "term" .=+             object [termQueryField .= object merged]]+    where+      base = [ "value" .= termQueryValue ]+      boosted = maybe [] (return . ("boost" .=)) boost+      merged = mappend base boosted++  toJSON (TermsQuery fieldName terms) =+    object [ "terms" .= object conjoined ]+    where conjoined = [fieldName .= terms]++  toJSON (IdsQuery idsQueryMappingName docIds) =+    object [ "ids" .= object conjoined ]+    where conjoined = [ "type"   .= idsQueryMappingName+                      , "values" .= fmap toJSON docIds ]++  toJSON (QueryQueryStringQuery qQueryStringQuery) =+    object [ "query_string" .= qQueryStringQuery ]++  toJSON (QueryMatchQuery matchQuery) =+    object [ "match" .= matchQuery ]++  toJSON (QueryMultiMatchQuery multiMatchQuery) =+      toJSON multiMatchQuery++  toJSON (QueryBoolQuery boolQuery) =+    object [ "bool" .= boolQuery ]++  toJSON (QueryBoostingQuery boostingQuery) =+    object [ "boosting" .= boostingQuery ]++  toJSON (QueryCommonTermsQuery commonTermsQuery) =+    object [ "common" .= commonTermsQuery ]++  toJSON (ConstantScoreFilter csFilter boost) =+    object ["constant_score" .= object ["filter" .= csFilter+                                       , "boost" .= boost]]++  toJSON (ConstantScoreQuery query boost) =+    object ["constant_score" .= object ["query" .= query+                                       , "boost" .= boost]]++  toJSON (QueryDisMaxQuery disMaxQuery) =+    object [ "dis_max" .= disMaxQuery ]++  toJSON (QueryFilteredQuery qFilteredQuery) =+    object [ "filtered" .= qFilteredQuery ]++  toJSON (QueryFuzzyLikeThisQuery fuzzyQuery) =+    object [ "fuzzy_like_this" .= fuzzyQuery ]++  toJSON (QueryFuzzyLikeFieldQuery fuzzyFieldQuery) =+    object [ "fuzzy_like_this_field" .= fuzzyFieldQuery ]++  toJSON (QueryFuzzyQuery fuzzyQuery) =+    object [ "fuzzy" .= fuzzyQuery ]++  toJSON (QueryHasChildQuery childQuery) =+    object [ "has_child" .= childQuery ]++  toJSON (QueryHasParentQuery parentQuery) =+    object [ "has_parent" .= parentQuery ]++  toJSON (QueryIndicesQuery qIndicesQuery) =+    object [ "indices" .= qIndicesQuery ]++  toJSON (MatchAllQuery boost) =+    object [ "match_all" .= omitNulls [ "boost" .= boost ] ]++  toJSON (QueryMoreLikeThisQuery query) =+    object [ "more_like_this" .= query ]++  toJSON (QueryMoreLikeThisFieldQuery query) =+    object [ "more_like_this_field" .= query ]++  toJSON (QueryNestedQuery query) =+    object [ "nested" .= query ]++  toJSON (QueryPrefixQuery query) =+    object [ "prefix" .= query ]++  toJSON (QueryRangeQuery query) =+    object [ "range"  .= query ]++  toJSON (QueryRegexpQuery query) =+    object [ "regexp" .= query ]++  toJSON (QuerySimpleQueryStringQuery query) =+    object [ "simple_query_string" .= query ]++instance FromJSON Query where+  parseJSON v = withObject "Query" parse v+    where parse o = termQuery `taggedWith` "term"+                <|> termsQuery `taggedWith` "terms"+                <|> idsQuery `taggedWith` "ids"+                <|> queryQueryStringQuery `taggedWith` "query_string"+                <|> queryMatchQuery `taggedWith` "match"+                <|> queryMultiMatchQuery+                <|> queryBoolQuery `taggedWith` "bool"+                <|> queryBoostingQuery `taggedWith` "boosting"+                <|> queryCommonTermsQuery `taggedWith` "common"+                <|> constantScoreFilter `taggedWith` "constant_score"+                <|> constantScoreQuery `taggedWith` "constant_score"+                <|> queryDisMaxQuery `taggedWith` "dis_max"+                <|> queryFilteredQuery `taggedWith` "filtered"+                <|> queryFuzzyLikeThisQuery `taggedWith` "fuzzy_like_this"+                <|> queryFuzzyLikeFieldQuery `taggedWith` "fuzzy_like_this_field"+                <|> queryFuzzyQuery `taggedWith` "fuzzy"+                <|> queryHasChildQuery `taggedWith` "has_child"+                <|> queryHasParentQuery `taggedWith` "has_parent"+                <|> queryIndicesQuery `taggedWith` "indices"+                <|> matchAllQuery `taggedWith` "match_all"+                <|> queryMoreLikeThisQuery `taggedWith` "more_like_this"+                <|> queryMoreLikeThisFieldQuery `taggedWith` "more_like_this_field"+                <|> queryNestedQuery `taggedWith` "nested"+                <|> queryPrefixQuery `taggedWith` "prefix"+                <|> queryRangeQuery `taggedWith` "range"+                <|> queryRegexpQuery `taggedWith` "regexp"+                <|> querySimpleQueryStringQuery `taggedWith` "simple_query_string"+            where taggedWith parser k = parser =<< o .: k+          termQuery = fieldTagged $ \(FieldName fn) o ->+                        TermQuery <$> (Term fn <$> o .: "value") <*> o .:? "boost"+          termsQuery o = case HM.toList o of+                           [(fn, vs)] -> do vals <- parseJSON vs+                                            case vals of+                                              x:xs -> return (TermsQuery fn (x :| xs))+                                              _ -> fail "Expected non empty list of values"+                           _ -> fail "Expected object with 1 field-named key"+          idsQuery o = IdsQuery <$> o .: "type"+                                <*> o .: "values"+          queryQueryStringQuery = pure . QueryQueryStringQuery+          queryMatchQuery = pure . QueryMatchQuery+          queryMultiMatchQuery = QueryMultiMatchQuery <$> parseJSON v+          queryBoolQuery = pure . QueryBoolQuery+          queryBoostingQuery = pure . QueryBoostingQuery+          queryCommonTermsQuery = pure . QueryCommonTermsQuery+          constantScoreFilter o = case HM.lookup "filter" o of+            Just x -> ConstantScoreFilter <$> parseJSON x+                                          <*> o .: "boost"+            _ -> fail "Does not appear to be a ConstantScoreFilter"+          constantScoreQuery o = case HM.lookup "query" o of+            Just x -> ConstantScoreQuery <$> parseJSON x+                                         <*> o .: "boost"+            _ -> fail "Does not appear to be a ConstantScoreQuery"+          queryDisMaxQuery = pure . QueryDisMaxQuery+          queryFilteredQuery = pure . QueryFilteredQuery+          queryFuzzyLikeThisQuery = pure . QueryFuzzyLikeThisQuery+          queryFuzzyLikeFieldQuery = pure . QueryFuzzyLikeFieldQuery+          queryFuzzyQuery = pure . QueryFuzzyQuery+          queryHasChildQuery = pure . QueryHasChildQuery+          queryHasParentQuery = pure . QueryHasParentQuery+          queryIndicesQuery = pure . QueryIndicesQuery+          matchAllQuery o = MatchAllQuery <$> o .:? "boost"+          queryMoreLikeThisQuery = pure . QueryMoreLikeThisQuery+          queryMoreLikeThisFieldQuery = pure . QueryMoreLikeThisFieldQuery+          queryNestedQuery = pure . QueryNestedQuery+          queryPrefixQuery = pure . QueryPrefixQuery+          queryRangeQuery = pure . QueryRangeQuery+          queryRegexpQuery = pure . QueryRegexpQuery+          querySimpleQueryStringQuery = pure . QuerySimpleQueryStringQuery+++omitNulls :: [(Text, Value)] -> Value+omitNulls = object . filter notNull where+  notNull (_, Null)      = False+  notNull (_, Array a) = (not . V.null) a+  notNull _              = True+++instance ToJSON SimpleQueryStringQuery where+  toJSON SimpleQueryStringQuery {..} =+    omitNulls (base ++ maybeAdd)+    where base = [ "query" .= simpleQueryStringQuery ]+          maybeAdd = [ "fields" .= simpleQueryStringField+                     , "default_operator" .= simpleQueryStringOperator+                     , "analyzer" .= simpleQueryStringAnalyzer+                     , "flags" .= simpleQueryStringFlags+                     , "lowercase_expanded_terms" .= simpleQueryStringLowercaseExpanded+                     , "locale" .= simpleQueryStringLocale ]++instance FromJSON SimpleQueryStringQuery where+  parseJSON = withObject "SimpleQueryStringQuery" parse+    where parse o = SimpleQueryStringQuery <$> o .: "query"+                                           <*> o .:? "fields"+                                           <*> o .:? "default_operator"+                                           <*> o .:? "analyzer"+                                           <*> (parseFlags <$> o .:? "flags")+                                           <*> o .:? "lowercase_expanded_terms"+                                           <*> o .:? "locale"+          parseFlags (Just (x:xs)) = Just (x :| xs)+          parseFlags _             = Nothing++instance ToJSON FieldOrFields where+  toJSON (FofField fieldName) =+    toJSON fieldName+  toJSON (FofFields fieldNames) =+    toJSON fieldNames++instance FromJSON FieldOrFields where+  parseJSON v = FofField  <$> parseJSON v+            <|> FofFields <$> (parseNEJSON =<< parseJSON v)++instance ToJSON SimpleQueryFlag where+  toJSON SimpleQueryAll        = "ALL"+  toJSON SimpleQueryNone       = "NONE"+  toJSON SimpleQueryAnd        = "AND"+  toJSON SimpleQueryOr         = "OR"+  toJSON SimpleQueryPrefix     = "PREFIX"+  toJSON SimpleQueryPhrase     = "PHRASE"+  toJSON SimpleQueryPrecedence = "PRECEDENCE"+  toJSON SimpleQueryEscape     = "ESCAPE"+  toJSON SimpleQueryWhitespace = "WHITESPACE"+  toJSON SimpleQueryFuzzy      = "FUZZY"+  toJSON SimpleQueryNear       = "NEAR"+  toJSON SimpleQuerySlop       = "SLOP"++instance FromJSON SimpleQueryFlag where+  parseJSON = withText "SimpleQueryFlag" parse+    where parse "ALL"        = pure SimpleQueryAll+          parse "NONE"       = pure SimpleQueryNone+          parse "AND"        = pure SimpleQueryAnd+          parse "OR"         = pure SimpleQueryOr+          parse "PREFIX"     = pure SimpleQueryPrefix+          parse "PHRASE"     = pure SimpleQueryPhrase+          parse "PRECEDENCE" = pure SimpleQueryPrecedence+          parse "ESCAPE"     = pure SimpleQueryEscape+          parse "WHITESPACE" = pure SimpleQueryWhitespace+          parse "FUZZY"      = pure SimpleQueryFuzzy+          parse "NEAR"       = pure SimpleQueryNear+          parse "SLOP"       = pure SimpleQuerySlop+          parse f            = fail ("Unexpected SimpleQueryFlag: " <> show f)++instance ToJSON RegexpQuery where+  toJSON (RegexpQuery (FieldName rqQueryField)+          (Regexp regexpQueryQuery) rqQueryFlags+          rqQueryBoost) =+   object [ rqQueryField .= omitNulls base ]+   where base = [ "value" .= regexpQueryQuery+                , "flags" .= rqQueryFlags+                , "boost" .= rqQueryBoost ]++instance FromJSON RegexpQuery where+  parseJSON = withObject "RegexpQuery" parse+    where parse = fieldTagged $ \fn o ->+                    RegexpQuery fn+                    <$> o .: "value"+                    <*> o .: "flags"+                    <*> o .:? "boost"++instance ToJSON QueryStringQuery where+  toJSON (QueryStringQuery qsQueryString+          qsDefaultField qsOperator+          qsAnalyzer qsAllowWildcard+          qsLowercaseExpanded  qsEnablePositionIncrements+          qsFuzzyMaxExpansions qsFuzziness+          qsFuzzyPrefixLength qsPhraseSlop+          qsBoost qsAnalyzeWildcard+          qsGeneratePhraseQueries qsMinimumShouldMatch+          qsLenient qsLocale) =+    omitNulls base+    where+      base = [ "query" .= qsQueryString+             , "default_field" .= qsDefaultField+             , "default_operator" .= qsOperator+             , "analyzer" .= qsAnalyzer+             , "allow_leading_wildcard" .= qsAllowWildcard+             , "lowercase_expanded_terms" .= qsLowercaseExpanded+             , "enable_position_increments" .= qsEnablePositionIncrements+             , "fuzzy_max_expansions" .= qsFuzzyMaxExpansions+             , "fuzziness" .= qsFuzziness+             , "fuzzy_prefix_length" .= qsFuzzyPrefixLength+             , "phrase_slop" .= qsPhraseSlop+             , "boost" .= qsBoost+             , "analyze_wildcard" .= qsAnalyzeWildcard+             , "auto_generate_phrase_queries" .= qsGeneratePhraseQueries+             , "minimum_should_match" .= qsMinimumShouldMatch+             , "lenient" .= qsLenient+             , "locale" .= qsLocale ]++instance FromJSON QueryStringQuery where+  parseJSON = withObject "QueryStringQuery" parse+    where parse o = QueryStringQuery+                    <$> o .: "query"+                    <*> o .:? "default_field"+                    <*> o .:? "default_operator"+                    <*> o .:? "analyzer"+                    <*> o .:? "allow_leading_wildcard"+                    <*> o .:? "lowercase_expanded_terms"+                    <*> o .:? "enable_position_increments"+                    <*> o .:? "fuzzy_max_expansions"+                    <*> o .:? "fuzziness"+                    <*> o .:? "fuzzy_prefix_length"+                    <*> o .:? "phrase_slop"+                    <*> o .:? "boost"+                    <*> o .:? "analyze_wildcard"+                    <*> o .:? "auto_generate_phrase_queries"+                    <*> o .:? "minimum_should_match"+                    <*> o .:? "lenient"+                    <*> o .:? "locale"++instance ToJSON RangeQuery where+  toJSON (RangeQuery (FieldName fieldName) range boost) =+    object [ fieldName .= object conjoined ]+    where conjoined = [ "boost" .= boost ] ++ (rangeValueToPair range)++instance FromJSON RangeQuery where+  parseJSON = withObject "RangeQuery" parse+    where parse = fieldTagged $ \fn o ->+                    RangeQuery fn+                    <$> parseJSON (Object o)+                    <*> o .: "boost"++instance FromJSON RangeValue where+  parseJSON = withObject "RangeValue" parse+    where parse o = parseDate o+                <|> parseDouble o+          parseDate o = do lt <- o .:? "lt"+                           lte <- o .:? "lte"+                           gt <- o .:? "gt"+                           gte <- o .:? "gte"+                           case (lt, lte, gt, gte) of+                             (Just a, _, Just b, _) -> return (RangeDateGtLt (GreaterThanD b) (LessThanD a))+                             (Just a, _, _, Just b)-> return (RangeDateGteLt (GreaterThanEqD b) (LessThanD a))+                             (_, Just a, Just b, _)-> return (RangeDateGtLte (GreaterThanD b) (LessThanEqD a))+                             (_, Just a, _, Just b)-> return (RangeDateGteLte (GreaterThanEqD b) (LessThanEqD a))+                             (_, _, Just a, _)-> return (RangeDateGt (GreaterThanD a))+                             (Just a, _, _, _)-> return (RangeDateLt (LessThanD a))+                             (_, _, _, Just a)-> return (RangeDateGte (GreaterThanEqD a))+                             (_, Just a, _, _)-> return (RangeDateLte (LessThanEqD a))+                             (Nothing, Nothing, Nothing, Nothing) -> mzero+          parseDouble o = do lt <- o .:? "lt"+                             lte <- o .:? "lte"+                             gt <- o .:? "gt"+                             gte <- o .:? "gte"+                             case (lt, lte, gt, gte) of+                               (Just a, _, Just b, _) -> return (RangeDoubleGtLt (GreaterThan b) (LessThan a))+                               (Just a, _, _, Just b)-> return (RangeDoubleGteLt (GreaterThanEq b) (LessThan a))+                               (_, Just a, Just b, _)-> return (RangeDoubleGtLte (GreaterThan b) (LessThanEq a))+                               (_, Just a, _, Just b)-> return (RangeDoubleGteLte (GreaterThanEq b) (LessThanEq a))+                               (_, _, Just a, _)-> return (RangeDoubleGt (GreaterThan a))+                               (Just a, _, _, _)-> return (RangeDoubleLt (LessThan a))+                               (_, _, _, Just a)-> return (RangeDoubleGte (GreaterThanEq a))+                               (_, Just a, _, _)-> return (RangeDoubleLte (LessThanEq a))+                               (Nothing, Nothing, Nothing, Nothing) -> mzero++instance ToJSON PrefixQuery where+  toJSON (PrefixQuery (FieldName fieldName) queryValue boost) =+    object [ fieldName .= omitNulls base ]+    where base = [ "value" .= queryValue+                 , "boost" .= boost ]++instance FromJSON PrefixQuery where+  parseJSON = withObject "PrefixQuery" parse+    where parse = fieldTagged $ \fn o ->+                    PrefixQuery fn+                    <$> o .: "value"+                    <*> o .:? "boost"++instance ToJSON NestedQuery where+  toJSON (NestedQuery nqPath nqScoreType nqQuery) =+    object [ "path"       .= nqPath+           , "score_mode" .= nqScoreType+           , "query"      .= nqQuery ]++instance FromJSON NestedQuery where+  parseJSON = withObject "NestedQuery" parse+    where parse o = NestedQuery+                    <$> o .: "path"+                    <*> o .: "score_mode"+                    <*> o .: "query"++instance ToJSON MoreLikeThisFieldQuery where+  toJSON (MoreLikeThisFieldQuery text (FieldName fieldName)+          percent mtf mqt stopwords mindf maxdf+          minwl maxwl boostTerms boost analyzer) =+    object [ fieldName .= omitNulls base ]+    where base = [ "like_text" .= text+                 , "percent_terms_to_match" .= percent+                 , "min_term_freq" .= mtf+                 , "max_query_terms" .= mqt+                 , "stop_words" .= stopwords+                 , "min_doc_freq" .= mindf+                 , "max_doc_freq" .= maxdf+                 , "min_word_length" .= minwl+                 , "max_word_length" .= maxwl+                 , "boost_terms" .= boostTerms+                 , "boost" .= boost+                 , "analyzer" .= analyzer ]++instance FromJSON MoreLikeThisFieldQuery where+  parseJSON = withObject "MoreLikeThisFieldQuery" parse+    where parse = fieldTagged $ \fn o ->+                    MoreLikeThisFieldQuery+                    <$> o .: "like_text"+                    <*> pure fn+                    <*> o .:? "percent_terms_to_match"+                    <*> o .:? "min_term_freq"+                    <*> o .:? "max_query_terms"+                    -- <*> (optionalNE =<< o .:? "stop_words")+                    <*> o .:? "stop_words"+                    <*> o .:? "min_doc_freq"+                    <*> o .:? "max_doc_freq"+                    <*> o .:? "min_word_length"+                    <*> o .:? "max_word_length"+                    <*> o .:? "boost_terms"+                    <*> o .:? "boost"+                    <*> o .:? "analyzer"+          -- optionalNE = maybe (pure Nothing) (fmap Just . parseNEJSON)++instance ToJSON MoreLikeThisQuery where+  toJSON (MoreLikeThisQuery text fields percent+          mtf mqt stopwords mindf maxdf+          minwl maxwl boostTerms boost analyzer) =+    omitNulls base+    where base = [ "like_text" .= text+                 , "fields" .= fields+                 , "percent_terms_to_match" .= percent+                 , "min_term_freq" .= mtf+                 , "max_query_terms" .= mqt+                 , "stop_words" .= stopwords+                 , "min_doc_freq" .= mindf+                 , "max_doc_freq" .= maxdf+                 , "min_word_length" .= minwl+                 , "max_word_length" .= maxwl+                 , "boost_terms" .= boostTerms+                 , "boost" .= boost+                 , "analyzer" .= analyzer ]++instance FromJSON MoreLikeThisQuery where+  parseJSON = withObject "MoreLikeThisQuery" parse+    where parse o = MoreLikeThisQuery+                    <$> o .: "like_text"+                    -- <*> (optionalNE =<< o .:? "fields")+                    <*> o .:? "fields"+                    <*> o .:? "percent_terms_to_match"+                    <*> o .:? "min_term_freq"+                    <*> o .:? "max_query_terms"+                    -- <*> (optionalNE =<< o .:? "stop_words")+                    <*> o .:? "stop_words"+                    <*> o .:? "min_doc_freq"+                    <*> o .:? "max_doc_freq"+                    <*> o .:? "min_word_length"+                    <*> o .:? "max_word_length"+                    <*> o .:? "boost_terms"+                    <*> o .:? "boost"+                    <*> o .:? "analyzer"+          -- optionalNE = maybe (pure Nothing) (fmap Just . parseNEJSON)++instance ToJSON IndicesQuery where+  toJSON (IndicesQuery indices query noMatch) =+    omitNulls [ "indices" .= indices+              , "no_match_query" .= noMatch+              , "query" .= query ]++instance FromJSON IndicesQuery where+  parseJSON = withObject "IndicesQuery" parse+    where parse o = IndicesQuery+                    <$> o .:? "indices" .!= []+                    <*> o .: "query"+                    <*> o .:? "no_match_query"++instance ToJSON HasParentQuery where+  toJSON (HasParentQuery queryType query scoreType) =+    omitNulls [ "parent_type" .= queryType+              , "score_type" .= scoreType+              , "query" .= query ]++instance FromJSON HasParentQuery where+  parseJSON = withObject "HasParentQuery" parse+    where parse o = HasParentQuery+                    <$> o .: "parent_type"+                    <*> o .: "query"+                    <*> o .:? "score_type"++instance ToJSON HasChildQuery where+  toJSON (HasChildQuery queryType query scoreType) =+    omitNulls [ "query" .= query+              , "score_type" .= scoreType+              , "type"  .= queryType ]++instance FromJSON HasChildQuery where+  parseJSON = withObject "HasChildQuery" parse+    where parse o = HasChildQuery+                    <$> o .: "type"+                    <*> o .: "query"+                    <*> o .:? "score_type"++instance ToJSON FuzzyQuery where+  toJSON (FuzzyQuery (FieldName fieldName) queryText+          prefixLength maxEx fuzziness boost) =+    object [ fieldName .= omitNulls base ]+    where base = [ "value"          .= queryText+                 , "fuzziness"      .= fuzziness+                 , "prefix_length"  .= prefixLength+                 , "boost" .= boost+                 , "max_expansions" .= maxEx ]++instance FromJSON FuzzyQuery where+  parseJSON = withObject "FuzzyQuery" parse+    where parse = fieldTagged $ \fn o ->+                    FuzzyQuery fn+                    <$> o .: "value"+                    <*> o .: "prefix_length"+                    <*> o .: "max_expansions"+                    <*> o .: "fuzziness"+                    <*> o .:? "boost"++instance ToJSON FuzzyLikeFieldQuery where+  toJSON (FuzzyLikeFieldQuery (FieldName fieldName)+          fieldText maxTerms ignoreFreq fuzziness prefixLength+          boost analyzer) =+    object [ fieldName .=+             omitNulls [ "like_text"       .= fieldText+                       , "max_query_terms" .= maxTerms+                       , "ignore_tf"       .= ignoreFreq+                       , "fuzziness"       .= fuzziness+                       , "prefix_length"   .= prefixLength+                       , "analyzer" .= analyzer+                       , "boost"           .= boost ]]++instance FromJSON FuzzyLikeFieldQuery where+  parseJSON = withObject "FuzzyLikeFieldQuery" parse+    where parse = fieldTagged $ \fn o ->+                    FuzzyLikeFieldQuery fn+                    <$> o .: "like_text"+                    <*> o .: "max_query_terms"+                    <*> o .: "ignore_tf"+                    <*> o .: "fuzziness"+                    <*> o .: "prefix_length"+                    <*> o .: "boost"+                    <*> o .:? "analyzer"++instance ToJSON FuzzyLikeThisQuery where+  toJSON (FuzzyLikeThisQuery fields text maxTerms+          ignoreFreq fuzziness prefixLength boost analyzer) =+    omitNulls base+    where base = [ "fields"          .= fields+                 , "like_text"       .= text+                 , "max_query_terms" .= maxTerms+                 , "ignore_tf"       .= ignoreFreq+                 , "fuzziness"       .= fuzziness+                 , "prefix_length"   .= prefixLength+                 , "analyzer"        .= analyzer+                 , "boost"           .= boost ]++instance FromJSON FuzzyLikeThisQuery where+  parseJSON = withObject "FuzzyLikeThisQuery" parse+    where parse o = FuzzyLikeThisQuery+                    <$> o .:? "fields" .!= []+                    <*> o .: "like_text"+                    <*> o .: "max_query_terms"+                    <*> o .: "ignore_tf"+                    <*> o .: "fuzziness"+                    <*> o .: "prefix_length"+                    <*> o .: "boost"+                    <*> o .:? "analyzer"++instance ToJSON FilteredQuery where+  toJSON (FilteredQuery query fFilter) =+    object [ "query"  .= query+           , "filter" .= fFilter ]++instance FromJSON FilteredQuery where+  parseJSON = withObject "FilteredQuery" parse+    where parse o = FilteredQuery+                    <$> o .: "query"+                    <*> o .: "filter"++instance ToJSON DisMaxQuery where+  toJSON (DisMaxQuery queries tiebreaker boost) =+    omitNulls base+    where base = [ "queries"     .= queries+                 , "boost"       .= boost+                 , "tie_breaker" .= tiebreaker ]++instance FromJSON DisMaxQuery where+  parseJSON = withObject "DisMaxQuery" parse+    where parse o = DisMaxQuery+                    <$> o .:? "queries" .!= []+                    <*> o .: "tie_breaker"+                    <*> o .:? "boost"++instance ToJSON CommonTermsQuery where+  toJSON (CommonTermsQuery (FieldName fieldName)+          (QueryString query) cf lfo hfo msm+          boost analyzer disableCoord) =+    object [fieldName .= omitNulls base ]+    where base = [ "query"              .= query+                 , "cutoff_frequency"   .= cf+                 , "low_freq_operator"  .= lfo+                 , "minimum_should_match" .= msm+                 , "boost" .= boost+                 , "analyzer" .= analyzer+                 , "disable_coord" .= disableCoord+                 , "high_freq_operator" .= hfo ]++instance FromJSON CommonTermsQuery where+  parseJSON = withObject "CommonTermsQuery" parse+    where parse = fieldTagged $ \fn o ->+                    CommonTermsQuery fn+                    <$> o .: "query"+                    <*> o .: "cutoff_frequency"+                    <*> o .: "low_freq_operator"+                    <*> o .: "high_freq_operator"+                    <*> o .:? "minimum_should_match"+                    <*> o .:? "boost"+                    <*> o .:? "analyzer"+                    <*> o .:? "disable_coord"++instance ToJSON CommonMinimumMatch where+  toJSON (CommonMinimumMatch mm) = toJSON mm+  toJSON (CommonMinimumMatchHighLow (MinimumMatchHighLow lowF highF)) =+    object [ "low_freq"  .= lowF+           , "high_freq" .= highF ]++instance FromJSON CommonMinimumMatch where+  parseJSON v = parseMinimum v+            <|> parseMinimumHighLow v+    where parseMinimum = fmap CommonMinimumMatch . parseJSON+          parseMinimumHighLow = fmap CommonMinimumMatchHighLow . withObject "CommonMinimumMatchHighLow" (\o ->+                                  MinimumMatchHighLow+                                  <$> o .: "low_freq"+                                  <*> o .: "high_freq")+++instance ToJSON BoostingQuery where+  toJSON (BoostingQuery bqPositiveQuery bqNegativeQuery bqNegativeBoost) =+    object [ "positive"       .= bqPositiveQuery+           , "negative"       .= bqNegativeQuery+           , "negative_boost" .= bqNegativeBoost ]++instance FromJSON BoostingQuery where+  parseJSON = withObject "BoostingQuery" parse+    where parse o = BoostingQuery+                    <$> o .: "positive"+                    <*> o .: "negative"+                    <*> o .: "negative_boost"++instance ToJSON BoolQuery where+  toJSON (BoolQuery mustM notM shouldM bqMin boost disableCoord) =+    omitNulls base+    where base = [ "must" .= mustM+                 , "must_not" .= notM+                 , "should" .= shouldM+                 , "minimum_should_match" .= bqMin+                 , "boost" .= boost+                 , "disable_coord" .= disableCoord ]++instance FromJSON BoolQuery where+  parseJSON = withObject "BoolQuery" parse+    where parse o = BoolQuery+                    <$> o .:? "must" .!= []+                    <*> o .:? "must_not" .!= []+                    <*> o .:? "should" .!= []+                    <*> o .:? "minimum_should_match"+                    <*> o .:? "boost"+                    <*> o .:? "disable_coord"++instance ToJSON MatchQuery where+  toJSON (MatchQuery (FieldName fieldName)+          (QueryString mqQueryString) booleanOperator+          zeroTermsQuery cutoffFrequency matchQueryType+          analyzer maxExpansions lenient boost) =+    object [ fieldName .= omitNulls base ]+    where base = [ "query" .= mqQueryString+                 , "operator" .= booleanOperator+                 , "zero_terms_query" .= zeroTermsQuery+                 , "cutoff_frequency" .= cutoffFrequency+                 , "type" .= matchQueryType+                 , "analyzer" .= analyzer+                 , "max_expansions" .= maxExpansions+                 , "lenient" .= lenient+                 , "boost" .= boost ]++instance FromJSON MatchQuery where+  parseJSON = withObject "MatchQuery" parse+    where parse = fieldTagged $ \fn o ->+                    MatchQuery fn+                    <$> o .:  "query"+                    <*> o .:  "operator"+                    <*> o .:  "zero_terms_query"+                    <*> o .:? "cutoff_frequency"+                    <*> o .:? "type"+                    <*> o .:? "analyzer"+                    <*> o .:? "max_expansions"+                    <*> o .:? "lenient"+                    <*> o .:? "boost"++instance ToJSON MultiMatchQuery where+  toJSON (MultiMatchQuery fields (QueryString query) boolOp+          ztQ tb mmqt cf analyzer maxEx lenient) =+    object ["multi_match" .= omitNulls base]+    where base = [ "fields" .= fmap toJSON fields+                 , "query" .= query+                 , "operator" .= boolOp+                 , "zero_terms_query" .= ztQ+                 , "tiebreaker" .= tb+                 , "type" .= mmqt+                 , "cutoff_frequency" .= cf+                 , "analyzer" .= analyzer+                 , "max_expansions" .= maxEx+                 , "lenient" .= lenient ]++instance FromJSON MultiMatchQuery where+  parseJSON = withObject "MultiMatchQuery" parse+    where parse raw = do o <- raw .: "multi_match"+                         MultiMatchQuery+                           <$> o .:? "fields" .!= []+                           <*> o .: "query"+                           <*> o .: "operator"+                           <*> o .: "zero_terms_query"+                           <*> o .:? "tiebreaker"+                           <*> o .:? "type"+                           <*> o .:? "cutoff_frequency"+                           <*> o .:? "analyzer"+                           <*> o .:? "max_expansions"+                           <*> o .:? "lenient"++instance ToJSON MultiMatchQueryType where+  toJSON MultiMatchBestFields = "best_fields"+  toJSON MultiMatchMostFields = "most_fields"+  toJSON MultiMatchCrossFields = "cross_fields"+  toJSON MultiMatchPhrase = "phrase"+  toJSON MultiMatchPhrasePrefix = "phrase_prefix"++instance FromJSON MultiMatchQueryType where+  parseJSON = withText "MultiMatchPhrasePrefix" parse+    where parse "best_fields"   = pure MultiMatchBestFields+          parse "most_fields"   = pure MultiMatchMostFields+          parse "cross_fields"  = pure MultiMatchCrossFields+          parse "phrase"        = pure MultiMatchPhrase+          parse "phrase_prefix" = pure MultiMatchPhrasePrefix+          parse t = fail ("Unexpected MultiMatchPhrasePrefix: " <> show t)++instance ToJSON BooleanOperator where+  toJSON And = String "and"+  toJSON Or = String "or"++instance FromJSON BooleanOperator where+  parseJSON = withText "BooleanOperator" parse+    where parse "and" = pure And+          parse "or"  = pure Or+          parse o     = fail ("Unexpected BooleanOperator: " <> show o)++instance ToJSON ZeroTermsQuery where+  toJSON ZeroTermsNone = String "none"+  toJSON ZeroTermsAll  = String "all"++instance FromJSON ZeroTermsQuery where+  parseJSON = withText "ZeroTermsQuery" parse+    where parse "none" = pure ZeroTermsNone+          parse "all"  = pure ZeroTermsAll+          parse q      = fail ("Unexpected ZeroTermsQuery: " <> show q)++instance ToJSON MatchQueryType where+  toJSON MatchPhrase = "phrase"+  toJSON MatchPhrasePrefix = "phrase_prefix"++instance FromJSON MatchQueryType where+  parseJSON = withText "MatchQueryType" parse+    where parse "phrase"        = pure MatchPhrase+          parse "phrase_prefix" = pure MatchPhrasePrefix+          parse t               = fail ("Unexpected MatchQueryType: " <> show t)++instance FromJSON Status where+  parseJSON (Object v) = Status <$>+                         v .:? "ok" <*>+                         (v .:? "status" .!= 200) <*>+                         v .: "name" <*>+                         v .: "version" <*>+                         v .: "tagline"+  parseJSON _          = empty+++instance ToJSON IndexSettings where+  toJSON (IndexSettings s r) = object ["settings" .=+                                 object ["index" .=+                                   object ["number_of_shards" .= s, "number_of_replicas" .= r]+                                 ]+                               ]++instance FromJSON IndexSettings where+  parseJSON = withObject "IndexSettings" parse+    where parse o = do s <- o .: "settings"+                       i <- s .: "index"+                       IndexSettings <$> i .: "number_of_shards"+                                     <*> i .: "number_of_replicas"++instance ToJSON UpdatableIndexSetting where+  toJSON (NumberOfReplicas x) = oPath ("index" :| ["number_of_replicas"]) x+  toJSON (AutoExpandReplicas x) = oPath ("index" :| ["auto_expand_replicas"]) x+  toJSON (RefreshInterval x) = oPath ("index" :| ["refresh_interval"]) (NominalDiffTimeJSON x)+  toJSON (IndexConcurrency x) = oPath ("index" :| ["concurrency"]) x+  toJSON (FailOnMergeFailure x) = oPath ("index" :| ["fail_on_merge_failure"]) x+  toJSON (TranslogFlushThresholdOps x) = oPath ("index" :| ["translog", "flush_threshold_ops"]) x+  toJSON (TranslogFlushThresholdSize x) = oPath ("index" :| ["translog", "flush_threshold_size"]) x+  toJSON (TranslogFlushThresholdPeriod x) = oPath ("index" :| ["translog", "flush_threshold_period"]) (NominalDiffTimeJSON x)+  toJSON (TranslogDisableFlush x) = oPath ("index" :| ["translog", "disable_flush"]) x+  toJSON (CacheFilterMaxSize x) = oPath ("index" :| ["cache", "filter", "max_size"]) x+  toJSON (CacheFilterExpire x) = oPath ("index" :| ["cache", "filter", "expire"]) (NominalDiffTimeJSON <$> x)+  toJSON (GatewaySnapshotInterval x) = oPath ("index" :| ["gateway", "snapshot_interval"]) (NominalDiffTimeJSON x)+  toJSON (RoutingAllocationInclude fs) = oPath ("index" :| ["routing", "allocation", "include"]) (attrFilterJSON fs)+  toJSON (RoutingAllocationExclude fs) = oPath ("index" :| ["routing", "allocation", "exclude"]) (attrFilterJSON fs)+  toJSON (RoutingAllocationRequire fs) = oPath ("index" :| ["routing", "allocation", "require"]) (attrFilterJSON fs)+  toJSON (RoutingAllocationEnable x) = oPath ("index" :| ["routing", "allocation", "enable"]) x+  toJSON (RoutingAllocationShardsPerNode x) = oPath ("index" :| ["routing", "allocation", "total_shards_per_node"]) x+  toJSON (RecoveryInitialShards x) = oPath ("index" :| ["recovery", "initial_shards"]) x+  toJSON (GCDeletes x) = oPath ("index" :| ["gc_deletes"]) (NominalDiffTimeJSON x)+  toJSON (TTLDisablePurge x) = oPath ("index" :| ["ttl", "disable_purge"]) x+  toJSON (TranslogFSType x) = oPath ("index" :| ["translog", "fs", "type"]) x+  toJSON (IndexCompoundFormat x) = oPath ("index" :| ["compound_format"]) x+  toJSON (IndexCompoundOnFlush x) = oPath ("index" :| ["compound_on_flush"]) x+  toJSON (WarmerEnabled x) = oPath ("index" :| ["warmer", "enabled"]) x+  toJSON (BlocksReadOnly x) = oPath ("blocks" :| ["read_only"]) x+  toJSON (BlocksRead x) = oPath ("blocks" :| ["read"]) x+  toJSON (BlocksWrite x) = oPath ("blocks" :| ["write"]) x+  toJSON (BlocksMetaData x) = oPath ("blocks" :| ["metadata"]) x++instance FromJSON UpdatableIndexSetting where+  parseJSON = withObject "UpdatableIndexSetting" parse+    where parse o = numberOfReplicas `taggedAt` ["index", "number_of_replicas"]+                <|> autoExpandReplicas `taggedAt` ["index", "auto_expand_replicas"]+                <|> refreshInterval `taggedAt` ["index", "refresh_interval"]+                <|> indexConcurrency `taggedAt` ["index", "concurrency"]+                <|> failOnMergeFailure `taggedAt` ["index", "fail_on_merge_failure"]+                <|> translogFlushThresholdOps `taggedAt` ["index", "translog", "flush_threshold_ops"]+                <|> translogFlushThresholdSize `taggedAt` ["index", "translog", "flush_threshold_size"]+                <|> translogFlushThresholdPeriod `taggedAt` ["index", "translog", "flush_threshold_period"]+                <|> translogDisableFlush `taggedAt` ["index", "translog", "disable_flush"]+                <|> cacheFilterMaxSize `taggedAt` ["index", "cache", "filter", "max_size"]+                <|> cacheFilterExpire `taggedAt` ["index", "cache", "filter", "expire"]+                <|> gatewaySnapshotInterval `taggedAt` ["index", "gateway", "snapshot_interval"]+                <|> routingAllocationInclude `taggedAt` ["index", "routing", "allocation", "include"]+                <|> routingAllocationExclude `taggedAt` ["index", "routing", "allocation", "exclude"]+                <|> routingAllocationRequire `taggedAt` ["index", "routing", "allocation", "require"]+                <|> routingAllocationEnable `taggedAt` ["index", "routing", "allocation", "enable"]+                <|> routingAllocationShardsPerNode `taggedAt` ["index", "routing", "allocation", "total_shards_per_node"]+                <|> recoveryInitialShards `taggedAt` ["index", "recovery", "initial_shards"]+                <|> gcDeletes `taggedAt` ["index", "gc_deletes"]+                <|> ttlDisablePurge `taggedAt` ["index", "ttl", "disable_purge"]+                <|> translogFSType `taggedAt` ["index", "translog", "fs", "type"]+                <|> compoundFormat `taggedAt` ["index", "compound_format"]+                <|> compoundOnFlush `taggedAt` ["index", "compound_on_flush"]+                <|> warmerEnabled `taggedAt` ["index", "warmer", "enabled"]+                <|> blocksReadOnly `taggedAt` ["blocks", "read_only"]+                <|> blocksRead `taggedAt` ["blocks", "read"]+                <|> blocksWrite `taggedAt` ["blocks", "write"]+                <|> blocksMetaData `taggedAt` ["blocks", "metadata"]+            where taggedAt f ks = taggedAt' f (Object o) ks+          taggedAt' f v [] = f =<< (parseJSON v <|> (parseJSON (unStringlyTypeJSON v)))+          taggedAt' f v (k:ks) = withObject "Object" (\o -> do v' <- o .: k+                                                               taggedAt' f v' ks) v+          numberOfReplicas               = pure . NumberOfReplicas+          autoExpandReplicas             = pure . AutoExpandReplicas+          refreshInterval                = pure . RefreshInterval . ndtJSON+          indexConcurrency               = pure . IndexConcurrency+          failOnMergeFailure             = pure . FailOnMergeFailure+          translogFlushThresholdOps      = pure . TranslogFlushThresholdOps+          translogFlushThresholdSize     = pure . TranslogFlushThresholdSize+          translogFlushThresholdPeriod   = pure . TranslogFlushThresholdPeriod . ndtJSON+          translogDisableFlush           = pure . TranslogDisableFlush+          cacheFilterMaxSize             = pure . CacheFilterMaxSize+          cacheFilterExpire              = pure . CacheFilterExpire . fmap ndtJSON+          gatewaySnapshotInterval        = pure . GatewaySnapshotInterval . ndtJSON+          routingAllocationInclude       = fmap RoutingAllocationInclude . parseAttrFilter+          routingAllocationExclude       = fmap RoutingAllocationExclude . parseAttrFilter+          routingAllocationRequire       = fmap RoutingAllocationRequire . parseAttrFilter+          routingAllocationEnable        = pure . RoutingAllocationEnable+          routingAllocationShardsPerNode = pure . RoutingAllocationShardsPerNode+          recoveryInitialShards          = pure . RecoveryInitialShards+          gcDeletes                      = pure . GCDeletes . ndtJSON+          ttlDisablePurge                = pure . TTLDisablePurge+          translogFSType                 = pure . TranslogFSType+          compoundFormat                 = pure . IndexCompoundFormat+          compoundOnFlush                = pure . IndexCompoundOnFlush+          warmerEnabled                  = pure . WarmerEnabled+          blocksReadOnly                 = pure . BlocksReadOnly+          blocksRead                     = pure . BlocksRead+          blocksWrite                    = pure . BlocksWrite+          blocksMetaData                 = pure . BlocksMetaData++instance FromJSON IndexSettingsSummary where+  parseJSON = withObject "IndexSettingsSummary" parse+    where parse o = case HM.toList o of+                      [(ixn, v@(Object o'))] -> IndexSettingsSummary (IndexName ixn)+                                                <$> parseJSON v+                                                <*> (fmap (filter (not . redundant)) . parseSettings =<< o' .: "settings")+                      _ -> fail "Expected single-key object with index name"+          redundant (NumberOfReplicas _) = True+          redundant _ = False++-- | For some reason in several settings APIs, all leaf values get returned+-- as strings. This function attepmts to recover from this for all+-- non-recursive JSON types. If nothing can be done, the value is left alone.+unStringlyTypeJSON :: Value -> Value+unStringlyTypeJSON (String "true") = Bool True+unStringlyTypeJSON (String "false") = Bool False+unStringlyTypeJSON (String "null") = Null+unStringlyTypeJSON v@(String t) = case readMay (T.unpack t) of+                                  Just n -> Number n+                                  Nothing -> v+unStringlyTypeJSON v = v+++parseSettings :: Object -> Parser [UpdatableIndexSetting]+parseSettings o = do+  o' <- o .: "index"+  -- slice the index object into singleton hashmaps and try to parse each+  parses <- forM (HM.toList o') $ \(k, v) -> do+    -- blocks are now nested into the "index" key, which is not how they're serialized+    let atRoot = Object (HM.singleton k v)+    let atIndex = Object (HM.singleton "index" atRoot)+    optional (parseJSON atRoot <|> parseJSON atIndex)+  return (catMaybes parses)++oPath :: ToJSON a => NonEmpty Text -> a -> Value+oPath (k :| []) v = object [k .= v]+oPath (k:| (h:t)) v = object [k .= oPath (h :| t) v]++attrFilterJSON :: NonEmpty NodeAttrFilter -> Value+attrFilterJSON fs = object [ n .= T.intercalate "," (toList vs)+                           | NodeAttrFilter (NodeAttrName n) vs <- toList fs]++parseAttrFilter :: Value -> Parser (NonEmpty NodeAttrFilter)+parseAttrFilter = withObject "NonEmpty NodeAttrFilter" parse+  where parse o = case HM.toList o of+                    [] -> fail "Expected non-empty list of NodeAttrFilters"+                    x:xs -> DT.mapM (uncurry parse') (x :| xs)+        parse' n = withText "Text" $ \t ->+          case T.splitOn "," t of+            fv:fvs -> return (NodeAttrFilter (NodeAttrName n) (fv :| fvs))+            [] -> fail "Expected non-empty list of filter values"++instance ToJSON ReplicaBounds where+  toJSON (ReplicasBounded a b)    = String (showText a <> "-" <> showText b)+  toJSON (ReplicasLowerBounded a) = String (showText a <> "-all")+  toJSON ReplicasUnbounded        = Bool False++instance FromJSON ReplicaBounds where+  parseJSON v = withText "ReplicaBounds" parseText v+            <|> withBool "ReplicaBounds" parseBool v+    where parseText t = case T.splitOn "-" t of+                          [a, "all"] -> ReplicasLowerBounded <$> parseReadText a+                          [a, b] -> ReplicasBounded <$> parseReadText a+                                                    <*> parseReadText b+                          _ -> fail ("Could not parse ReplicaBounds: " <> show t)+          parseBool False = pure ReplicasUnbounded+          parseBool _ = fail "ReplicasUnbounded cannot be represented with True"++instance ToJSON AllocationPolicy where+  toJSON AllocAll          = String "all"+  toJSON AllocPrimaries    = String "primaries"+  toJSON AllocNewPrimaries = String "new_primaries"+  toJSON AllocNone         = String "none"++instance FromJSON AllocationPolicy where+  parseJSON = withText "AllocationPolicy" parse+    where parse "all" = pure AllocAll+          parse "primaries" = pure AllocPrimaries+          parse "new_primaries" = pure AllocNewPrimaries+          parse "none" = pure AllocNone+          parse t = fail ("Invlaid AllocationPolicy: " <> show t)++instance ToJSON InitialShardCount where+  toJSON QuorumShards       = String "quorum"+  toJSON QuorumMinus1Shards = String "quorum-1"+  toJSON FullShards         = String "full"+  toJSON FullMinus1Shards   = String "full-1"+  toJSON (ExplicitShards x) = toJSON x++instance FromJSON InitialShardCount where+  parseJSON v = withText "InitialShardCount" parseText v+            <|> ExplicitShards <$> parseJSON v+    where parseText "quorum"   = pure QuorumShards+          parseText "quorum-1" = pure QuorumMinus1Shards+          parseText "full"     = pure FullShards+          parseText "full-1"   = pure FullMinus1Shards+          parseText _          = mzero++instance ToJSON FSType where+  toJSON FSSimple   = "simple"+  toJSON FSBuffered = "buffered"++instance FromJSON FSType where+  parseJSON = withText "FSType" parse+    where parse "simple" = pure FSSimple+          parse "buffered" = pure FSBuffered+          parse t = fail ("Invalid FSType: " <> show t)++instance ToJSON CompoundFormat where+  toJSON (CompoundFileFormat x) = Bool x+  toJSON (MergeSegmentVsTotalIndex x) = toJSON x++instance FromJSON CompoundFormat where+  parseJSON v = CompoundFileFormat <$> parseJSON v+            <|> MergeSegmentVsTotalIndex <$> parseJSON v++instance ToJSON NominalDiffTimeJSON where+  toJSON (NominalDiffTimeJSON t) = String (showText (round t :: Integer) <> "s")++instance FromJSON NominalDiffTimeJSON where+  parseJSON = withText "NominalDiffTime" parse+    where parse t = case T.takeEnd 1 t of+                      "s" -> NominalDiffTimeJSON . fromInteger <$> parseReadText (T.dropEnd 1 t)+                      _ -> fail "Invalid or missing NominalDiffTime unit (expected s)"++instance ToJSON IndexTemplate where+  toJSON (IndexTemplate p s m) = merge+    (object [ "template" .= p+            , "mappings" .= foldl' merge (object []) m+            ])+    (toJSON s)+   where+     merge (Object o1) (Object o2) = toJSON $ HM.union o1 o2+     merge o           Null        = o+     merge _           _           = undefined++instance (FromJSON a) => FromJSON (EsResult a) where+  parseJSON jsonVal@(Object v) = do+    found <- v .:? "found" .!= False+    fr <- if found+             then parseJSON jsonVal+             else return Nothing+    EsResult <$> v .:  "_index"   <*>+                 v .:  "_type"    <*>+                 v .:  "_id"      <*>+                 pure fr+  parseJSON _          = empty++instance (FromJSON a) => FromJSON (EsResultFound a) where+  parseJSON (Object v) = EsResultFound <$>+                         v .: "_version" <*>+                         v .: "_source"+  parseJSON _          = empty++instance FromJSON EsError where+  parseJSON (Object v) = EsError <$>+                         v .: "status" <*>+                         (v .: "error" <|> (v .: "error" >>= (.: "reason")))+  parseJSON _ = empty++instance FromJSON IndexAliasesSummary where+  parseJSON = withObject "IndexAliasesSummary" parse+    where parse o = IndexAliasesSummary . mconcat <$> mapM (uncurry go) (HM.toList o)+          go ixn = withObject "index aliases" $ \ia -> do+                     aliases <- ia .:? "aliases" .!= mempty+                     forM (HM.toList aliases) $ \(aName, v) -> do+                       let indexAlias = IndexAlias (IndexName ixn) (IndexAliasName (IndexName aName))+                       IndexAliasSummary indexAlias <$> parseJSON v+++instance ToJSON IndexAliasAction where+  toJSON (AddAlias ia opts) = object ["add" .= (iaObj <> optsObj)]+    where Object iaObj = toJSON ia+          Object optsObj = toJSON opts+  toJSON (RemoveAlias ia) = object ["remove" .= iaObj]+    where Object iaObj = toJSON ia++instance ToJSON IndexAlias where+  toJSON IndexAlias {..} = object ["index" .= srcIndex+                                  , "alias" .= indexAlias+                                  ]++instance ToJSON IndexAliasCreate where+  toJSON IndexAliasCreate {..} = Object (filterObj <> routingObj)+    where filterObj = maybe mempty (HM.singleton "filter" . toJSON) aliasCreateFilter+          Object routingObj = maybe (Object mempty) toJSON aliasCreateRouting++instance ToJSON AliasRouting where+  toJSON (AllAliasRouting v) = object ["routing" .= v]+  toJSON (GranularAliasRouting srch idx) = object (catMaybes prs)+    where prs = [("search_routing" .=) <$> srch+                ,("index_routing" .=) <$> idx]++instance FromJSON AliasRouting where+  parseJSON = withObject "AliasRouting" parse+    where parse o = parseAll o <|> parseGranular o+          parseAll o = AllAliasRouting <$> o .: "routing"+          parseGranular o = do+            sr <- o .:? "search_routing"+            ir <- o .:? "index_routing"+            if isNothing sr && isNothing ir+               then fail "Both search_routing and index_routing can't be blank"+               else return (GranularAliasRouting sr ir)++instance FromJSON IndexAliasCreate where+  parseJSON v = withObject "IndexAliasCreate" parse v+    where parse o = IndexAliasCreate <$> optional (parseJSON v)+                                     <*> o .:? "filter"++instance ToJSON SearchAliasRouting where+  toJSON (SearchAliasRouting rvs) = toJSON (T.intercalate "," (routingValue <$> toList rvs))++instance FromJSON SearchAliasRouting where+  parseJSON = withText "SearchAliasRouting" parse+    where parse t = SearchAliasRouting <$> parseNEJSON (String <$> T.splitOn "," t)++instance ToJSON Search where+  toJSON (Search query sFilter sort searchAggs highlight sTrackSortScores sFrom sSize _ sFields sSource) =+    omitNulls [ "query"        .= query+              , "filter"       .= sFilter+              , "sort"         .= sort+              , "aggregations" .= searchAggs+              , "highlight"    .= highlight+              , "from"         .= sFrom+              , "size"         .= sSize+              , "track_scores" .= sTrackSortScores+              , "fields"       .= sFields+              , "_source"      .= sSource]+++instance ToJSON Source where+    toJSON NoSource                         = toJSON False+    toJSON (SourcePatterns patterns)        = toJSON patterns+    toJSON (SourceIncludeExclude incl excl) = object [ "include" .= incl, "exclude" .= excl ]++instance ToJSON PatternOrPatterns where+  toJSON (PopPattern pattern)   = toJSON pattern+  toJSON (PopPatterns patterns) = toJSON patterns++instance ToJSON Include where+  toJSON (Include patterns) = toJSON patterns++instance ToJSON Exclude where+  toJSON (Exclude patterns) = toJSON patterns++instance ToJSON Pattern where+  toJSON (Pattern pattern) = toJSON pattern+++instance ToJSON FieldHighlight where+    toJSON (FieldHighlight (FieldName fName) (Just fSettings)) =+        object [ fName .= fSettings ]+    toJSON (FieldHighlight (FieldName fName) Nothing) =+        object [ fName .= emptyObject ]++instance ToJSON Highlights where+    toJSON (Highlights global fields) =+        omitNulls (("fields" .= fields)+                  : highlightSettingsPairs global)++instance ToJSON HighlightSettings where+    toJSON hs = omitNulls (highlightSettingsPairs (Just hs))++highlightSettingsPairs :: Maybe HighlightSettings -> [Pair]+highlightSettingsPairs Nothing = []+highlightSettingsPairs (Just (Plain plh)) = plainHighPairs (Just plh)+highlightSettingsPairs (Just (Postings ph)) = postHighPairs (Just ph)+highlightSettingsPairs (Just (FastVector fvh)) = fastVectorHighPairs (Just fvh)+++plainHighPairs :: Maybe PlainHighlight -> [Pair]+plainHighPairs Nothing = []+plainHighPairs (Just (PlainHighlight plCom plNonPost)) =+    [ "type" .= String "plain"]+    ++ commonHighlightPairs plCom+    ++ nonPostingsToPairs plNonPost++postHighPairs :: Maybe PostingsHighlight -> [Pair]+postHighPairs Nothing = []+postHighPairs (Just (PostingsHighlight pCom)) =+    ("type" .= String "postings")+    : commonHighlightPairs pCom++fastVectorHighPairs :: Maybe FastVectorHighlight -> [Pair]+fastVectorHighPairs Nothing = []+fastVectorHighPairs (Just+                     (FastVectorHighlight fvCom fvNonPostSettings fvBoundChars+                                          fvBoundMaxScan fvFragOff fvMatchedFields+                                          fvPhraseLim)) =+                        [ "type" .= String "fvh"+                        , "boundary_chars" .= fvBoundChars+                        , "boundary_max_scan" .= fvBoundMaxScan+                        , "fragment_offset" .= fvFragOff+                        , "matched_fields" .= fvMatchedFields+                        , "phraseLimit" .= fvPhraseLim]+                        ++ commonHighlightPairs fvCom+                        ++ nonPostingsToPairs fvNonPostSettings++deleteSeveral :: (Eq k, Hashable k) => [k] -> HM.HashMap k v -> HM.HashMap k v+deleteSeveral ks hm = foldr HM.delete hm ks++commonHighlightPairs :: Maybe CommonHighlight -> [Pair]+commonHighlightPairs Nothing = []+commonHighlightPairs (Just (CommonHighlight chScore chForceSource chTag chEncoder+                                      chNoMatchSize chHighlightQuery+                                      chRequireFieldMatch)) =+    [ "order" .= chScore+    , "force_source" .= chForceSource+    , "encoder" .= chEncoder+    , "no_match_size" .= chNoMatchSize+    , "highlight_query" .= chHighlightQuery+    , "require_fieldMatch" .= chRequireFieldMatch]+    ++ highlightTagToPairs chTag+++nonPostingsToPairs :: Maybe NonPostings -> [Pair]+nonPostingsToPairs Nothing = []+nonPostingsToPairs (Just (NonPostings npFragSize npNumOfFrags)) =+    [ "fragment_size" .= npFragSize+    , "number_of_fragments" .= npNumOfFrags]++parseNEJSON :: (FromJSON a) => [Value] -> Parser (NonEmpty a)+parseNEJSON []     = fail "Expected non-empty list"+parseNEJSON (x:xs) = DT.mapM parseJSON (x :| xs)+++instance ToJSON HighlightEncoder where+    toJSON DefaultEncoder = String "default"+    toJSON HTMLEncoder    = String "html"++highlightTagToPairs :: Maybe HighlightTag -> [Pair]+highlightTagToPairs (Just (TagSchema _))            = [ "scheme"    .=  String "default"]+highlightTagToPairs (Just (CustomTags (pre, post))) = [ "pre_tags"  .= pre+                                                      , "post_tags" .= post]+highlightTagToPairs Nothing = []++instance ToJSON SortSpec where+  toJSON (DefaultSortSpec+          (DefaultSort (FieldName dsSortFieldName) dsSortOrder dsIgnoreUnmapped+           dsSortMode dsMissingSort dsNestedFilter)) =+    object [dsSortFieldName .= omitNulls base] where+      base = [ "order" .= dsSortOrder+             , "ignore_unmapped" .= dsIgnoreUnmapped+             , "mode" .= dsSortMode+             , "missing" .= dsMissingSort+             , "nested_filter" .= dsNestedFilter ]++  toJSON (GeoDistanceSortSpec gdsSortOrder (GeoPoint (FieldName field) gdsLatLon) units) =+    object [ "unit" .= units+           , field .= gdsLatLon+           , "order" .= gdsSortOrder ]+++instance ToJSON SortOrder where+  toJSON Ascending  = String "asc"+  toJSON Descending = String "desc"+++instance ToJSON SortMode where+  toJSON SortMin = String "min"+  toJSON SortMax = String "max"+  toJSON SortSum = String "sum"+  toJSON SortAvg = String "avg"+++instance ToJSON Missing where+  toJSON LastMissing = String "_last"+  toJSON FirstMissing = String "_first"+  toJSON (CustomMissing txt) = String txt+++instance ToJSON ScoreType where+  toJSON ScoreTypeMax  = "max"+  toJSON ScoreTypeAvg  = "avg"+  toJSON ScoreTypeSum  = "sum"+  toJSON ScoreTypeNone = "none"++instance FromJSON ScoreType where+  parseJSON = withText "ScoreType" parse+    where parse "max"  = pure ScoreTypeMax+          parse "avg"  = pure ScoreTypeAvg+          parse "sum"  = pure ScoreTypeSum+          parse "none" = pure ScoreTypeNone+          parse t = fail ("Unexpected ScoreType: " <> show t)++instance ToJSON Distance where+  toJSON (Distance dCoefficient dUnit) =+    String boltedTogether where+      coefText = showText dCoefficient+      (String unitText) = toJSON dUnit+      boltedTogether = mappend coefText unitText++instance FromJSON Distance where+  parseJSON = withText "Distance" parse+    where parse t = Distance <$> parseCoeff nT+                             <*> parseJSON (String unitT)+            where (nT, unitT) = T.span validForNumber t+                  -- may be a better way to do this+                  validForNumber '-' = True+                  validForNumber '.' = True+                  validForNumber 'e' = True+                  validForNumber c = isNumber c+                  parseCoeff "" = fail "Empty string cannot be parsed as number"+                  parseCoeff s = return (read (T.unpack s))++instance ToJSON DistanceUnit where+  toJSON Miles         = String "mi"+  toJSON Yards         = String "yd"+  toJSON Feet          = String "ft"+  toJSON Inches        = String "in"+  toJSON Kilometers    = String "km"+  toJSON Meters        = String "m"+  toJSON Centimeters   = String "cm"+  toJSON Millimeters   = String "mm"+  toJSON NauticalMiles = String "nmi"+++instance FromJSON DistanceUnit where+  parseJSON = withText "DistanceUnit" parse+    where parse "mi"  = pure Miles+          parse "yd"  = pure Yards+          parse "ft"  = pure Feet+          parse "in"  = pure Inches+          parse "km"  = pure Kilometers+          parse "m"   = pure Meters+          parse "cm"  = pure Centimeters+          parse "mm"  = pure Millimeters+          parse "nmi" = pure NauticalMiles+          parse u = fail ("Unrecognized DistanceUnit: " <> show u)++instance ToJSON DistanceType where+  toJSON Arc       = String "arc"+  toJSON SloppyArc = String "sloppy_arc"+  toJSON Plane     = String "plane"++instance FromJSON DistanceType where+  parseJSON = withText "DistanceType" parse+    where parse "arc" = pure Arc+          parse "sloppy_arc" = pure SloppyArc+          parse "plane" = pure Plane+          parse t = fail ("Unrecognized DistanceType: " <> show t)+++instance ToJSON OptimizeBbox where+  toJSON NoOptimizeBbox = String "none"+  toJSON (OptimizeGeoFilterType gft) = toJSON gft++instance FromJSON OptimizeBbox where+  parseJSON v = withText "NoOptimizeBbox" parseNoOptimize v+            <|> parseOptimize v+    where parseNoOptimize "none" = pure NoOptimizeBbox+          parseNoOptimize _ = mzero+          parseOptimize = fmap OptimizeGeoFilterType . parseJSON++instance ToJSON GeoBoundingBoxConstraint where+  toJSON (GeoBoundingBoxConstraint+          (FieldName gbbcGeoBBField) gbbcConstraintBox cache type') =+    object [gbbcGeoBBField .= gbbcConstraintBox+           , "_cache"  .= cache+           , "type" .= type']++instance FromJSON GeoBoundingBoxConstraint where+  parseJSON = withObject "GeoBoundingBoxConstraint" parse+    where parse o = case HM.toList (deleteSeveral ["type", "_cache"] o) of+                      [(fn, v)] -> GeoBoundingBoxConstraint (FieldName fn)+                                   <$> parseJSON v+                                   <*> o .:? "_cache" .!= defaultCache+                                   <*> o .: "type"+                      _ -> fail "Could not find field name for GeoBoundingBoxConstraint"++instance ToJSON GeoFilterType where+  toJSON GeoFilterMemory  = String "memory"+  toJSON GeoFilterIndexed = String "indexed"++instance FromJSON GeoFilterType where+  parseJSON = withText "GeoFilterType" parse+    where parse "memory"  = pure GeoFilterMemory+          parse "indexed" = pure GeoFilterIndexed+          parse t         = fail ("Unrecognized GeoFilterType: " <> show t)++instance ToJSON GeoBoundingBox where+  toJSON (GeoBoundingBox gbbTopLeft gbbBottomRight) =+    object ["top_left"      .= gbbTopLeft+           , "bottom_right" .= gbbBottomRight]++instance FromJSON GeoBoundingBox where+  parseJSON = withObject "GeoBoundingBox" parse+    where parse o = GeoBoundingBox+                    <$> o .: "top_left"+                    <*> o .: "bottom_right"++instance ToJSON LatLon where+  toJSON (LatLon lLat lLon) =+    object ["lat"  .= lLat+           , "lon" .= lLon]++instance FromJSON LatLon where+  parseJSON = withObject "LatLon" parse+    where parse o = LatLon <$> o .: "lat"+                           <*> o .: "lon"++-- index for smaller ranges, fielddata for longer ranges+instance ToJSON RangeExecution where+  toJSON RangeExecutionIndex     = "index"+  toJSON RangeExecutionFielddata = "fielddata"+++instance FromJSON RangeExecution where+  parseJSON = withText "RangeExecution" parse+    where parse "index"     = pure RangeExecutionIndex+          parse "fielddata" = pure RangeExecutionFielddata+          parse t           = error ("Unrecognized RangeExecution " <> show t)++instance ToJSON RegexpFlags where+  toJSON AllRegexpFlags              = String "ALL"+  toJSON NoRegexpFlags               = String "NONE"+  toJSON (SomeRegexpFlags (h :| fs)) = String $ T.intercalate "|" flagStrs+    where flagStrs             = map flagStr . nub $ h:fs+          flagStr AnyString    = "ANYSTRING"+          flagStr Automaton    = "AUTOMATON"+          flagStr Complement   = "COMPLEMENT"+          flagStr Empty        = "EMPTY"+          flagStr Intersection = "INTERSECTION"+          flagStr Interval     = "INTERVAL"++instance FromJSON RegexpFlags where+  parseJSON = withText "RegexpFlags" parse+    where parse "ALL" = pure AllRegexpFlags+          parse "NONE" = pure NoRegexpFlags+          parse t = SomeRegexpFlags <$> parseNEJSON (String <$> T.splitOn "|" t)++instance FromJSON RegexpFlag where+  parseJSON = withText "RegexpFlag" parse+    where parse "ANYSTRING"    = pure AnyString+          parse "AUTOMATON"    = pure Automaton+          parse "COMPLEMENT"   = pure Complement+          parse "EMPTY"        = pure Empty+          parse "INTERSECTION" = pure Intersection+          parse "INTERVAL"     = pure Interval+          parse f              = fail ("Unknown RegexpFlag: " <> show f)++instance ToJSON Term where+  toJSON (Term field value) = object ["term" .= object+                                      [field .= value]]++instance FromJSON Term where+  parseJSON = withObject "Term" parse+    where parse o = do termObj <- o .: "term"+                       case HM.toList termObj of+                         [(fn, v)] -> Term fn <$> parseJSON v+                         _ -> fail "Expected object with 1 field-named key"++instance ToJSON BoolMatch where+  toJSON (MustMatch    term  cache) = object ["must"     .= term,+                                              "_cache" .= cache]+  toJSON (MustNotMatch term  cache) = object ["must_not" .= term,+                                              "_cache" .= cache]+  toJSON (ShouldMatch  terms cache) = object ["should"   .= fmap toJSON terms,+                                              "_cache" .= cache]++instance FromJSON BoolMatch where+  parseJSON = withObject "BoolMatch" parse+    where parse o = mustMatch `taggedWith` "must"+                <|> mustNotMatch `taggedWith` "must_not"+                <|> shouldMatch `taggedWith` "should"+            where taggedWith parser k = parser =<< o .: k+                  mustMatch t = MustMatch t <$> o .:? "_cache" .!= defaultCache+                  mustNotMatch t = MustNotMatch t <$> o .:? "_cache" .!= defaultCache+                  shouldMatch t = ShouldMatch t <$> o .:? "_cache" .!= defaultCache++instance (FromJSON a) => FromJSON (SearchResult a) where+  parseJSON (Object v) = SearchResult <$>+                         v .:  "took"         <*>+                         v .:  "timed_out"    <*>+                         v .:  "_shards"      <*>+                         v .:  "hits"         <*>+                         v .:? "aggregations" <*>+                         v .:? "_scroll_id"+  parseJSON _          = empty++instance (FromJSON a) => FromJSON (SearchHits a) where+  parseJSON (Object v) = SearchHits <$>+                         v .: "total"     <*>+                         v .: "max_score" <*>+                         v .: "hits"+  parseJSON _          = empty++instance (FromJSON a) => FromJSON (Hit a) where+  parseJSON (Object v) = Hit <$>+                         v .:  "_index"   <*>+                         v .:  "_type"    <*>+                         v .:  "_id"      <*>+                         v .:  "_score"   <*>+                         v .:?  "_source" <*>+                         v .:? "highlight"+  parseJSON _          = empty++instance FromJSON ShardResult where+  parseJSON (Object v) = ShardResult       <$>+                         v .: "total"      <*>+                         v .: "successful" <*>+                         v .: "failed"+  parseJSON _          = empty+++instance FromJSON DocVersion where+  parseJSON v = do+    i <- parseJSON v+    maybe (fail "DocVersion out of range") return $ mkDocVersion i++-- This insanity is because ES *sometimes* returns Replica/Shard counts as strings+instance FromJSON ReplicaCount where+  parseJSON v = parseAsInt v+            <|> parseAsString v+    where parseAsInt = fmap ReplicaCount . parseJSON+          parseAsString = withText "ReplicaCount" (fmap ReplicaCount . parseReadText)++instance FromJSON ShardCount where+  parseJSON v = parseAsInt v+            <|> parseAsString v+    where parseAsInt = fmap ShardCount . parseJSON+          parseAsString = withText "ShardCount" (fmap ShardCount . parseReadText)++instance Bounded DocVersion where+  minBound = DocVersion 1+  maxBound = DocVersion 9200000000000000000 -- 9.2e+18++instance Enum DocVersion where+  succ x+    | x /= maxBound = DocVersion (succ $ docVersionNumber x)+    | otherwise     = succError "DocVersion"+  pred x+    | x /= minBound = DocVersion (pred $ docVersionNumber x)+    | otherwise     = predError "DocVersion"+  toEnum i =+    fromMaybe (error $ show i ++ " out of DocVersion range") $ mkDocVersion i+  fromEnum = docVersionNumber+  enumFrom = boundedEnumFrom+  enumFromThen = boundedEnumFromThen++-- | Username type used for HTTP Basic authentication. See 'basicAuthHook'.+newtype EsUsername = EsUsername { esUsername :: Text } deriving (Read, Show, Eq)++-- | Password type used for HTTP Basic authentication. See 'basicAuthHook'.+newtype EsPassword = EsPassword { esPassword :: Text } deriving (Read, Show, Eq)+++data SnapshotRepoSelection = SnapshotRepoList (NonEmpty SnapshotRepoPattern)+                           | AllSnapshotRepos deriving (Eq, Generic, Show, Typeable)+++-- | Either specifies an exact repo name or one with globs in it,+-- e.g. @RepoPattern "foo*"@ __NOTE__: Patterns are not supported on ES < 1.7+data SnapshotRepoPattern = ExactRepo SnapshotRepoName+                         | RepoPattern Text+                         deriving (Eq, Generic, Show, Typeable)++-- | The unique name of a snapshot repository.+newtype SnapshotRepoName = SnapshotRepoName  { snapshotRepoName :: Text }+                         deriving (Eq, Ord, Generic, Show, Typeable, ToJSON, FromJSON)+++-- | A generic representation of a snapshot repo. This is what gets+-- sent to and parsed from the server. For repo types enabled by+-- plugins that aren't exported by this library, consider making a+-- custom type which implements 'SnapshotRepo'. If it is a common repo+-- type, consider submitting a pull request to have it included in the+-- library proper+data GenericSnapshotRepo = GenericSnapshotRepo {+      gSnapshotRepoName     :: SnapshotRepoName+    , gSnapshotRepoType     :: SnapshotRepoType+    , gSnapshotRepoSettings :: GenericSnapshotRepoSettings+    } deriving (Eq, Generic, Show, Typeable)+++instance SnapshotRepo GenericSnapshotRepo where+  toGSnapshotRepo = id+  fromGSnapshotRepo = Right+++newtype SnapshotRepoType = SnapshotRepoType { snapshotRepoType :: Text }+                         deriving (Eq, Ord, Generic, Show, Typeable, ToJSON, FromJSON)+++-- | Opaque representation of snapshot repo settings. Instances of+-- 'SnapshotRepo' will produce this.+newtype GenericSnapshotRepoSettings = GenericSnapshotRepoSettings { gSnapshotRepoSettingsObject :: Object }+                                    deriving (Eq, Generic, Show, Typeable, ToJSON)+++ -- Regardless of whether you send strongly typed json, my version of+ -- ES sends back stringly typed json in the settings, e.g. booleans+ -- as strings, so we'll try to convert them.+instance FromJSON GenericSnapshotRepoSettings where+  parseJSON = fmap (GenericSnapshotRepoSettings . fmap unStringlyTypeJSON). parseJSON++-- | The result of running 'verifySnapshotRepo'.+newtype SnapshotVerification = SnapshotVerification { snapshotNodeVerifications :: [SnapshotNodeVerification] }+                             deriving (Eq, Generic, Show, Typeable)+++instance FromJSON SnapshotVerification where+  parseJSON = withObject "SnapshotVerification" parse+    where+      parse o = do+        o2 <- o .: "nodes"+        SnapshotVerification <$> mapM (uncurry parse') (HM.toList o2)+      parse' rawFullId = withObject "SnapshotNodeVerification" $ \o ->+        SnapshotNodeVerification (FullNodeId rawFullId) <$> o .: "name"+++-- | A node that has verified a snapshot+data SnapshotNodeVerification = SnapshotNodeVerification {+      snvFullId   :: FullNodeId+    , snvNodeName :: NodeName+    } deriving (Eq, Generic, Show, Typeable)+++-- | Unique, automatically-generated name assigned to nodes that are+-- usually returned in node-oriented APIs.+newtype FullNodeId = FullNodeId { fullNodeId :: Text }+                   deriving (Eq, Ord, Generic, Show, Typeable, FromJSON)+++-- | A human-readable node name that is supplied by the user in the+-- node config or automatically generated by ElasticSearch.+newtype NodeName = NodeName { nodeName :: Text }+                 deriving (Eq, Ord, Generic, Show, Typeable, FromJSON)++newtype ClusterName = ClusterName { clusterName :: Text }+                 deriving (Eq, Ord, Generic, Show, Typeable, FromJSON)++data NodesInfo = NodesInfo {+      nodesInfo        :: [NodeInfo]+    , nodesClusterName :: ClusterName+    } deriving (Eq, Show, Generic, Typeable)++data NodesStats = NodesStats {+      nodesStats            :: [NodeStats]+    , nodesStatsClusterName :: ClusterName+    } deriving (Eq, Show, Generic, Typeable)++data NodeStats = NodeStats {+      nodeStatsName          :: NodeName+    , nodeStatsFullId        :: FullNodeId+    , nodeStatsBreakersStats :: Maybe NodeBreakersStats+    , nodeStatsHTTP          :: NodeHTTPStats+    , nodeStatsTransport     :: NodeTransportStats+    , nodeStatsFS            :: NodeFSStats+    , nodeStatsNetwork       :: NodeNetworkStats+    , nodeStatsThreadPool    :: NodeThreadPoolsStats+    , nodeStatsJVM           :: NodeJVMStats+    , nodeStatsProcess       :: NodeProcessStats+    , nodeStatsOS            :: NodeOSStats+    , nodeStatsIndices       :: NodeIndicesStats+    } deriving (Eq, Show, Generic, Typeable)++data NodeBreakersStats = NodeBreakersStats {+      nodeStatsParentBreaker    :: NodeBreakerStats+    , nodeStatsRequestBreaker   :: NodeBreakerStats+    , nodeStatsFieldDataBreaker :: NodeBreakerStats+    } deriving (Eq, Show, Generic, Typeable)++data NodeBreakerStats = NodeBreakerStats {+      nodeBreakersTripped   :: Int+    , nodeBreakersOverhead  :: Double+    , nodeBreakersEstSize   :: Bytes+    , nodeBreakersLimitSize :: Bytes+    } deriving (Eq, Show, Generic, Typeable)++data NodeHTTPStats = NodeHTTPStats {+      nodeHTTPTotalOpened :: Int+    , nodeHTTPCurrentOpen :: Int+    } deriving (Eq, Show, Generic, Typeable)++data NodeTransportStats = NodeTransportStats {+      nodeTransportTXSize     :: Bytes+    , nodeTransportCount      :: Int+    , nodeTransportRXSize     :: Bytes+    , nodeTransportRXCount    :: Int+    , nodeTransportServerOpen :: Int+    } deriving (Eq, Show, Generic, Typeable)++data NodeFSStats = NodeFSStats {+      nodeFSDataPaths :: [NodeDataPathStats]+    , nodeFSTotal     :: NodeFSTotalStats+    , nodeFSTimestamp :: UTCTime+    } deriving (Eq, Show, Generic, Typeable)++data NodeDataPathStats = NodeDataPathStats {+      nodeDataPathDiskServiceTime :: Maybe Double+    , nodeDataPathDiskQueue       :: Maybe Double+    , nodeDataPathIOSize          :: Maybe Bytes+    , nodeDataPathWriteSize       :: Maybe Bytes+    , nodeDataPathReadSize        :: Maybe Bytes+    , nodeDataPathIOOps           :: Maybe Int+    , nodeDataPathWrites          :: Maybe Int+    , nodeDataPathReads           :: Maybe Int+    , nodeDataPathAvailable       :: Bytes+    , nodeDataPathFree            :: Bytes+    , nodeDataPathTotal           :: Bytes+    , nodeDataPathType            :: Maybe Text+    , nodeDataPathDevice          :: Text+    , nodeDataPathMount           :: Text+    , nodeDataPathPath            :: Text+    } deriving (Eq, Show, Generic, Typeable)++data NodeFSTotalStats = NodeFSTotalStats {+      nodeFSTotalDiskServiceTime :: Maybe Double+    , nodeFSTotalDiskQueue       :: Maybe Double+    , nodeFSTotalIOSize          :: Maybe Bytes+    , nodeFSTotalWriteSize       :: Maybe Bytes+    , nodeFSTotalReadSize        :: Maybe Bytes+    , nodeFSTotalIOOps           :: Maybe Int+    , nodeFSTotalWrites          :: Maybe Int+    , nodeFSTotalReads           :: Maybe Int+    , nodeFSTotalAvailable       :: Bytes+    , nodeFSTotalFree            :: Bytes+    , nodeFSTotalTotal           :: Bytes+    } deriving (Eq, Show, Generic, Typeable)++data NodeNetworkStats = NodeNetworkStats {+      nodeNetTCPOutRSTs      :: Int+    , nodeNetTCPInErrs       :: Int+    , nodeNetTCPAttemptFails :: Int+    , nodeNetTCPEstabResets  :: Int+    , nodeNetTCPRetransSegs  :: Int+    , nodeNetTCPOutSegs      :: Int+    , nodeNetTCPInSegs       :: Int+    , nodeNetTCPCurrEstab    :: Int+    , nodeNetTCPPassiveOpens :: Int+    , nodeNetTCPActiveOpens  :: Int+    } deriving (Eq, Show, Generic, Typeable)++data NodeThreadPoolsStats = NodeThreadPoolsStats {+      nodeThreadPoolsStatsSnapshot          :: NodeThreadPoolStats+    , nodeThreadPoolsStatsBulk              :: NodeThreadPoolStats+    , nodeThreadPoolsStatsMerge             :: NodeThreadPoolStats+    , nodeThreadPoolsStatsGet               :: NodeThreadPoolStats+    , nodeThreadPoolsStatsManagement        :: NodeThreadPoolStats+    , nodeThreadPoolsStatsFetchShardStore   :: Maybe NodeThreadPoolStats+    , nodeThreadPoolsStatsOptimize          :: NodeThreadPoolStats+    , nodeThreadPoolsStatsFlush             :: NodeThreadPoolStats+    , nodeThreadPoolsStatsSearch            :: NodeThreadPoolStats+    , nodeThreadPoolsStatsWarmer            :: NodeThreadPoolStats+    , nodeThreadPoolsStatsGeneric           :: NodeThreadPoolStats+    , nodeThreadPoolsStatsSuggest           :: NodeThreadPoolStats+    , nodeThreadPoolsStatsRefresh           :: NodeThreadPoolStats+    , nodeThreadPoolsStatsIndex             :: NodeThreadPoolStats+    , nodeThreadPoolsStatsListener          :: Maybe NodeThreadPoolStats+    , nodeThreadPoolsStatsFetchShardStarted :: Maybe NodeThreadPoolStats+    , nodeThreadPoolsStatsPercolate         :: NodeThreadPoolStats+    } deriving (Eq, Show, Generic, Typeable)++data NodeThreadPoolStats = NodeThreadPoolStats {+      nodeThreadPoolCompleted :: Int+    , nodeThreadPoolLargest   :: Int+    , nodeThreadPoolRejected  :: Int+    , nodeThreadPoolActive    :: Int+    , nodeThreadPoolQueue     :: Int+    , nodeThreadPoolThreads   :: Int+    } deriving (Eq, Show, Generic, Typeable)++data NodeJVMStats = NodeJVMStats {+      nodeJVMStatsMappedBufferPool :: JVMBufferPoolStats+    , nodeJVMStatsDirectBufferPool :: JVMBufferPoolStats+    , nodeJVMStatsGCOldCollector   :: JVMGCStats+    , nodeJVMStatsGCYoungCollector :: JVMGCStats+    , nodeJVMStatsPeakThreadsCount :: Int+    , nodeJVMStatsThreadsCount     :: Int+    , nodeJVMStatsOldPool          :: JVMPoolStats+    , nodeJVMStatsSurvivorPool     :: JVMPoolStats+    , nodeJVMStatsYoungPool        :: JVMPoolStats+    , nodeJVMStatsNonHeapCommitted :: Bytes+    , nodeJVMStatsNonHeapUsed      :: Bytes+    , nodeJVMStatsHeapMax          :: Bytes+    , nodeJVMStatsHeapCommitted    :: Bytes+    , nodeJVMStatsHeapUsedPercent  :: Int+    , nodeJVMStatsHeapUsed         :: Bytes+    , nodeJVMStatsUptime           :: NominalDiffTime+    , nodeJVMStatsTimestamp        :: UTCTime+    } deriving (Eq, Show, Generic, Typeable)++data JVMBufferPoolStats = JVMBufferPoolStats {+      jvmBufferPoolStatsTotalCapacity :: Bytes+    , jvmBufferPoolStatsUsed          :: Bytes+    , jvmBufferPoolStatsCount         :: Int+    } deriving (Eq, Show, Generic, Typeable)++data JVMGCStats = JVMGCStats {+      jvmGCStatsCollectionTime  :: NominalDiffTime+    , jvmGCStatsCollectionCount :: Int+    } deriving (Eq, Show, Generic, Typeable)++data JVMPoolStats = JVMPoolStats {+      jvmPoolStatsPeakMax  :: Bytes+    , jvmPoolStatsPeakUsed :: Bytes+    , jvmPoolStatsMax      :: Bytes+    , jvmPoolStatsUsed     :: Bytes+    } deriving (Eq, Show, Generic, Typeable)++data NodeProcessStats = NodeProcessStats {+      nodeProcessMemTotalVirtual :: Bytes+    , nodeProcessMemShare        :: Bytes+    , nodeProcessMemResident     :: Bytes+    , nodeProcessCPUTotal        :: NominalDiffTime+    , nodeProcessCPUUser         :: NominalDiffTime+    , nodeProcessCPUSys          :: NominalDiffTime+    , nodeProcessCPUPercent      :: Int+    , nodeProcessOpenFDs         :: Int+    , nodeProcessTimestamp       :: UTCTime+    } deriving (Eq, Show, Generic, Typeable)++data NodeOSStats = NodeOSStats {+      nodeOSSwapFree       :: Bytes+    , nodeOSSwapUsed       :: Bytes+    , nodeOSMemActualUsed  :: Bytes+    , nodeOSMemActualFree  :: Bytes+    , nodeOSMemUsedPercent :: Int+    , nodeOSMemFreePercent :: Int+    , nodeOSMemUsed        :: Bytes+    , nodeOSMemFree        :: Bytes+    , nodeOSCPUStolen      :: Int+    , nodeOSCPUUsage       :: Int+    , nodeOSCPUIdle        :: Int+    , nodeOSCPUUser        :: Int+    , nodeOSCPUSys         :: Int+    , nodeOSLoad           :: Maybe LoadAvgs+    , nodeOSUptime         :: NominalDiffTime+    , nodeOSTimestamp      :: UTCTime+    } deriving (Eq, Show, Generic, Typeable)++data LoadAvgs = LoadAvgs {+     loadAvg1Min  :: Double+   , loadAvg5Min  :: Double+   , loadAvg15Min :: Double+   } deriving (Eq, Show, Generic, Typeable)++data NodeIndicesStats = NodeIndicesStats {+      nodeIndicesStatsRecoveryThrottleTime    :: Maybe NominalDiffTime+    , nodeIndicesStatsRecoveryCurrentAsTarget :: Maybe Int+    , nodeIndicesStatsRecoveryCurrentAsSource :: Maybe Int+    , nodeIndicesStatsQueryCacheMisses        :: Maybe Int+    , nodeIndicesStatsQueryCacheHits          :: Maybe Int+    , nodeIndicesStatsQueryCacheEvictions     :: Maybe Int+    , nodeIndicesStatsQueryCacheSize          :: Maybe Bytes+    , nodeIndicesStatsSuggestCurrent          :: Int+    , nodeIndicesStatsSuggestTime             :: NominalDiffTime+    , nodeIndicesStatsSuggestTotal            :: Int+    , nodeIndicesStatsTranslogSize            :: Bytes+    , nodeIndicesStatsTranslogOps             :: Int+    , nodeIndicesStatsSegFixedBitSetMemory    :: Maybe Bytes+    , nodeIndicesStatsSegVersionMapMemory     :: Bytes+    , nodeIndicesStatsSegIndexWriterMaxMemory :: Maybe Bytes+    , nodeIndicesStatsSegIndexWriterMemory    :: Bytes+    , nodeIndicesStatsSegMemory               :: Bytes+    , nodeIndicesStatsSegCount                :: Int+    , nodeIndicesStatsCompletionSize          :: Bytes+    , nodeIndicesStatsPercolateQueries        :: Int+    , nodeIndicesStatsPercolateMemory         :: Bytes+    , nodeIndicesStatsPercolateCurrent        :: Int+    , nodeIndicesStatsPercolateTime           :: NominalDiffTime+    , nodeIndicesStatsPercolateTotal          :: Int+    , nodeIndicesStatsFieldDataEvictions      :: Int+    , nodeIndicesStatsFieldDataMemory         :: Bytes+    , nodeIndicesStatsIDCacheMemory           :: Bytes+    , nodeIndicesStatsFilterCacheEvictions    :: Int+    , nodeIndicesStatsFilterCacheMemory       :: Bytes+    , nodeIndicesStatsWarmerTotalTime         :: NominalDiffTime+    , nodeIndicesStatsWarmerTotal             :: Int+    , nodeIndicesStatsWarmerCurrent           :: Int+    , nodeIndicesStatsFlushTotalTime          :: NominalDiffTime+    , nodeIndicesStatsFlushTotal              :: Int+    , nodeIndicesStatsRefreshTotalTime        :: NominalDiffTime+    , nodeIndicesStatsRefreshTotal            :: Int+    , nodeIndicesStatsMergesTotalSize         :: Bytes+    , nodeIndicesStatsMergesTotalDocs         :: Int+    , nodeIndicesStatsMergesTotalTime         :: NominalDiffTime+    , nodeIndicesStatsMergesTotal             :: Int+    , nodeIndicesStatsMergesCurrentSize       :: Bytes+    , nodeIndicesStatsMergesCurrentDocs       :: Int+    , nodeIndicesStatsMergesCurrent           :: Int+    , nodeIndicesStatsSearchFetchCurrent      :: Int+    , nodeIndicesStatsSearchFetchTime         :: NominalDiffTime+    , nodeIndicesStatsSearchFetchTotal        :: Int+    , nodeIndicesStatsSearchQueryCurrent      :: Int+    , nodeIndicesStatsSearchQueryTime         :: NominalDiffTime+    , nodeIndicesStatsSearchQueryTotal        :: Int+    , nodeIndicesStatsSearchOpenContexts      :: Int+    , nodeIndicesStatsGetCurrent              :: Int+    , nodeIndicesStatsGetMissingTime          :: NominalDiffTime+    , nodeIndicesStatsGetMissingTotal         :: Int+    , nodeIndicesStatsGetExistsTime           :: NominalDiffTime+    , nodeIndicesStatsGetExistsTotal          :: Int+    , nodeIndicesStatsGetTime                 :: NominalDiffTime+    , nodeIndicesStatsGetTotal                :: Int+    , nodeIndicesStatsIndexingThrottleTime    :: Maybe NominalDiffTime+    , nodeIndicesStatsIndexingIsThrottled     :: Maybe Bool+    , nodeIndicesStatsIndexingNoopUpdateTotal :: Maybe Int+    , nodeIndicesStatsIndexingDeleteCurrent   :: Int+    , nodeIndicesStatsIndexingDeleteTime      :: NominalDiffTime+    , nodeIndicesStatsIndexingDeleteTotal     :: Int+    , nodeIndicesStatsIndexingIndexCurrent    :: Int+    , nodeIndicesStatsIndexingIndexTime       :: NominalDiffTime+    , nodeIndicesStatsIndexingTotal           :: Int+    , nodeIndicesStatsStoreThrottleTime       :: NominalDiffTime+    , nodeIndicesStatsStoreSize               :: Bytes+    , nodeIndicesStatsDocsDeleted             :: Int+    , nodeIndicesStatsDocsCount               :: Int+    } deriving (Eq, Show, Generic, Typeable)++-- | A quirky address format used throughout ElasticSearch. An example+-- would be inet[/1.1.1.1:9200]. inet may be a placeholder for a+-- <https://en.wikipedia.org/wiki/Fully_qualified_domain_name FQDN>.+newtype EsAddress = EsAddress { esAddress :: Text }+                 deriving (Eq, Ord, Generic, Show, Typeable, FromJSON)++-- | Typically a 7 character hex string.+newtype BuildHash = BuildHash { buildHash :: Text }+                 deriving (Eq, Ord, Generic, Read, Show, Typeable, FromJSON, ToJSON)++newtype PluginName = PluginName { pluginName :: Text }+                 deriving (Eq, Ord, Generic, Show, Typeable, FromJSON)++data NodeInfo = NodeInfo {+      nodeInfoHTTPAddress      :: EsAddress+    , nodeInfoBuild            :: BuildHash+    , nodeInfoESVersion        :: VersionNumber+    , nodeInfoIP               :: Server+    , nodeInfoHost             :: Server+    , nodeInfoTransportAddress :: EsAddress+    , nodeInfoName             :: NodeName+    , nodeInfoFullId           :: FullNodeId+    , nodeInfoPlugins          :: [NodePluginInfo]+    , nodeInfoHTTP             :: NodeHTTPInfo+    , nodeInfoTransport        :: NodeTransportInfo+    , nodeInfoNetwork          :: NodeNetworkInfo+    , nodeInfoThreadPool       :: NodeThreadPoolsInfo+    , nodeInfoJVM              :: NodeJVMInfo+    , nodeInfoProcess          :: NodeProcessInfo+    , nodeInfoOS               :: NodeOSInfo+    , nodeInfoSettings         :: Object+    -- ^ The members of the settings objects are not consistent,+    -- dependent on plugins, etc.+    } deriving (Eq, Show, Generic, Typeable)++data NodePluginInfo = NodePluginInfo {+      nodePluginSite        :: Bool+    -- ^ Is this a site plugin?+    , nodePluginJVM         :: Bool+    -- ^ Is this plugin running on the JVM+    , nodePluginDescription :: Text+    , nodePluginVersion     :: MaybeNA VersionNumber+    , nodePluginName        :: PluginName+    } deriving (Eq, Show, Generic, Typeable)++data NodeHTTPInfo = NodeHTTPInfo {+      nodeHTTPMaxContentLength :: Bytes+    , nodeHTTPTransportAddress :: BoundTransportAddress+    } deriving (Eq, Show, Generic, Typeable)++data NodeTransportInfo = NodeTransportInfo {+      nodeTransportProfiles :: [BoundTransportAddress]+    , nodeTransportAddress  :: BoundTransportAddress+    } deriving (Eq, Show, Generic, Typeable)++data BoundTransportAddress = BoundTransportAddress {+      publishAddress :: EsAddress+    , boundAddress   :: EsAddress+    } deriving (Eq, Show, Generic, Typeable)++data NodeNetworkInfo = NodeNetworkInfo {+      nodeNetworkPrimaryInterface :: NodeNetworkInterface+    , nodeNetworkRefreshInterval  :: NominalDiffTime+    } deriving (Eq, Show, Generic, Typeable)++newtype MacAddress = MacAddress { macAddress :: Text }+                 deriving (Eq, Ord, Generic, Show, Typeable, FromJSON)++newtype NetworkInterfaceName = NetworkInterfaceName { networkInterfaceName :: Text }+                 deriving (Eq, Ord, Generic, Show, Typeable, FromJSON)++data NodeNetworkInterface = NodeNetworkInterface {+      nodeNetIfaceMacAddress :: MacAddress+    , nodeNetIfaceName       :: NetworkInterfaceName+    , nodeNetIfaceAddress    :: Server+    } deriving (Eq, Show, Generic, Typeable)++data NodeThreadPoolsInfo = NodeThreadPoolsInfo {+      nodeThreadPoolsRefresh           :: NodeThreadPoolInfo+    , nodeThreadPoolsManagement        :: NodeThreadPoolInfo+    , nodeThreadPoolsPercolate         :: NodeThreadPoolInfo+    , nodeThreadPoolsListener          :: Maybe NodeThreadPoolInfo+    , nodeThreadPoolsFetchShardStarted :: Maybe NodeThreadPoolInfo+    , nodeThreadPoolsSearch            :: NodeThreadPoolInfo+    , nodeThreadPoolsFlush             :: NodeThreadPoolInfo+    , nodeThreadPoolsWarmer            :: NodeThreadPoolInfo+    , nodeThreadPoolsOptimize          :: NodeThreadPoolInfo+    , nodeThreadPoolsBulk              :: NodeThreadPoolInfo+    , nodeThreadPoolsSuggest           :: NodeThreadPoolInfo+    , nodeThreadPoolsMerge             :: NodeThreadPoolInfo+    , nodeThreadPoolsSnapshot          :: NodeThreadPoolInfo+    , nodeThreadPoolsGet               :: NodeThreadPoolInfo+    , nodeThreadPoolsFetchShardStore   :: Maybe NodeThreadPoolInfo+    , nodeThreadPoolsIndex             :: NodeThreadPoolInfo+    , nodeThreadPoolsGeneric           :: NodeThreadPoolInfo+    } deriving (Eq, Show, Generic, Typeable)++data NodeThreadPoolInfo = NodeThreadPoolInfo {+      nodeThreadPoolQueueSize :: ThreadPoolSize+    , nodeThreadPoolKeepalive :: Maybe NominalDiffTime+    , nodeThreadPoolMin       :: Maybe Int+    , nodeThreadPoolMax       :: Maybe Int+    , nodeThreadPoolType      :: ThreadPoolType+    } deriving (Eq, Show, Generic, Typeable)++data ThreadPoolSize = ThreadPoolBounded Int+                    | ThreadPoolUnbounded+                    deriving (Eq, Show, Generic, Typeable)++data ThreadPoolType = ThreadPoolScaling+                    | ThreadPoolFixed+                    | ThreadPoolCached+                    deriving (Eq, Show, Generic, Typeable)++data NodeJVMInfo = NodeJVMInfo {+      nodeJVMInfoMemoryPools             :: [JVMMemoryPool]+    , nodeJVMInfoMemoryPoolsGCCollectors :: [JVMGCCollector]+    , nodeJVMInfoMemoryInfo              :: JVMMemoryInfo+    , nodeJVMInfoStartTime               :: UTCTime+    , nodeJVMInfoVMVendor                :: Text+    , nodeJVMVMVersion                   :: VersionNumber+    -- ^ JVM doesn't seme to follow normal version conventions+    , nodeJVMVMName                      :: Text+    , nodeJVMVersion                     :: VersionNumber+    , nodeJVMPID                         :: PID+    } deriving (Eq, Show, Generic, Typeable)++-- | Handles quirks in the way JVM versions are rendered (1.7.0_101 -> 1.7.0.101)+newtype JVMVersion = JVMVersion { unJVMVersion :: VersionNumber }++data JVMMemoryInfo = JVMMemoryInfo {+      jvmMemoryInfoDirectMax   :: Bytes+    , jvmMemoryInfoNonHeapMax  :: Bytes+    , jvmMemoryInfoNonHeapInit :: Bytes+    , jvmMemoryInfoHeapMax     :: Bytes+    , jvmMemoryInfoHeapInit    :: Bytes+    } deriving (Eq, Show, Generic, Typeable)++newtype JVMMemoryPool = JVMMemoryPool {+      jvmMemoryPool :: Text+    } deriving (Eq, Show, Generic, Typeable, FromJSON)++newtype JVMGCCollector = JVMGCCollector {+      jvmGCCollector :: Text+    } deriving (Eq, Show, Generic, Typeable, FromJSON)++newtype PID = PID {+      pid :: Int+    } deriving (Eq, Show, Generic, Typeable, FromJSON)++data NodeOSInfo = NodeOSInfo {+      nodeOSSwap                :: Bytes+    , nodeOSMem                 :: Bytes+    , nodeOSCPUInfo             :: CPUInfo+    , nodeOSAvailableProcessors :: Int+    , nodeOSRefreshInterval     :: NominalDiffTime+    } deriving (Eq, Show, Generic, Typeable)++data CPUInfo = CPUInfo {+      cpuCacheSize      :: Bytes+    , cpuCoresPerSocket :: Int+    , cpuTotalSockets   :: Int+    , cpuTotalCores     :: Int+    , cpuMHZ            :: Int+    , cpuModel          :: Text+    , cpuVendor         :: Text+    } deriving (Eq, Show, Generic, Typeable)++data NodeProcessInfo = NodeProcessInfo {+      nodeProcessMLockAll           :: Bool+    -- ^ See <https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html>+    , nodeProcessMaxFileDescriptors :: Int+    , nodeProcessId                 :: PID+    , nodeProcessRefreshInterval    :: NominalDiffTime+    } deriving (Eq, Show, Generic, Typeable)++data SnapshotRepoUpdateSettings = SnapshotRepoUpdateSettings {+     repoUpdateVerify :: Bool+     -- ^ After creation/update, synchronously check that nodes can+     -- write to this repo. Defaults to True. You may use False if you+     -- need a faster response and plan on verifying manually later+     -- with 'verifySnapshotRepo'.+    } deriving (Eq, Show, Generic, Typeable)+++-- | Reasonable defaults for repo creation/update+--+-- * repoUpdateVerify True+defaultSnapshotRepoUpdateSettings :: SnapshotRepoUpdateSettings+defaultSnapshotRepoUpdateSettings = SnapshotRepoUpdateSettings True+++-- | A filesystem-based snapshot repo that ships with+-- ElasticSearch. This is an instance of 'SnapshotRepo' so it can be+-- used with 'updateSnapshotRepo'+data FsSnapshotRepo = FsSnapshotRepo {+      fsrName                   :: SnapshotRepoName+    , fsrLocation               :: FilePath+    , fsrCompressMetadata       :: Bool+    , fsrChunkSize              :: Maybe Bytes+    -- ^ Size by which to split large files during snapshotting.+    , fsrMaxRestoreBytesPerSec  :: Maybe Bytes+    -- ^ Throttle node restore rate. If not supplied, defaults to 40mb/sec+    , fsrMaxSnapshotBytesPerSec :: Maybe Bytes+    -- ^ Throttle node snapshot rate. If not supplied, defaults to 40mb/sec+    } deriving (Eq, Generic, Show, Typeable)+++instance SnapshotRepo FsSnapshotRepo where+  toGSnapshotRepo FsSnapshotRepo {..} =+    GenericSnapshotRepo fsrName fsRepoType (GenericSnapshotRepoSettings settings)+    where+      Object settings = object $ [ "location" .= fsrLocation+                                 , "compress" .= fsrCompressMetadata+                                 ] ++ optionalPairs+      optionalPairs = catMaybes [ ("chunk_size" .=) <$> fsrChunkSize+                                , ("max_restore_bytes_per_sec" .=) <$> fsrMaxRestoreBytesPerSec+                                , ("max_snapshot_bytes_per_sec" .=) <$> fsrMaxSnapshotBytesPerSec+                                ]+  fromGSnapshotRepo GenericSnapshotRepo {..}+    | gSnapshotRepoType == fsRepoType = do+      let o = gSnapshotRepoSettingsObject gSnapshotRepoSettings+      parseRepo $ do+        FsSnapshotRepo gSnapshotRepoName <$> o .: "location"+                                         <*> o .:? "compress" .!= False+                                         <*> o .:? "chunk_size"+                                         <*> o .:? "max_restore_bytes_per_sec"+                                         <*> o .:? "max_snapshot_bytes_per_sec"+    | otherwise = Left (RepoTypeMismatch fsRepoType gSnapshotRepoType)+++parseRepo :: Parser a -> Either SnapshotRepoConversionError a+parseRepo parser = case parseEither (const parser) () of+  Left e -> Left (OtherRepoConversionError (T.pack e))+  Right a -> Right a+++fsRepoType :: SnapshotRepoType+fsRepoType = SnapshotRepoType "fs"++-- | Law: fromGSnapshotRepo (toGSnapshotRepo r) == Right r+class SnapshotRepo r where+  toGSnapshotRepo :: r -> GenericSnapshotRepo+  fromGSnapshotRepo :: GenericSnapshotRepo -> Either SnapshotRepoConversionError r+++data SnapshotRepoConversionError = RepoTypeMismatch SnapshotRepoType SnapshotRepoType+                                 -- ^ Expected type and actual type+                                 | OtherRepoConversionError Text+                                 deriving (Show, Eq, Generic, Typeable)+++instance Exception SnapshotRepoConversionError+++data SnapshotCreateSettings = SnapshotCreateSettings {+      snapWaitForCompletion  :: Bool+      -- ^ Should the API call return immediately after initializing+      -- the snapshot or wait until completed? Note that if this is+      -- enabled it could wait a long time, so you should adjust your+      -- 'ManagerSettings' accordingly to set long timeouts or+      -- explicitly handle timeouts.+    , snapIndices            :: Maybe IndexSelection+    -- ^ Nothing will snapshot all indices. Just [] is permissable and+    -- will essentially be a no-op snapshot.+    , snapIgnoreUnavailable  :: Bool+    -- ^ If set to True, any matched indices that don't exist will be+    -- ignored. Otherwise it will be an error and fail.+    , snapIncludeGlobalState :: Bool+    , snapPartial            :: Bool+    -- ^ If some indices failed to snapshot (e.g. if not all primary+    -- shards are available), should the process proceed?+    } deriving (Eq, Generic, Show, Typeable)+++-- | Reasonable defaults for snapshot creation+--+-- * snapWaitForCompletion False+-- * snapIndices Nothing+-- * snapIgnoreUnavailable False+-- * snapIncludeGlobalState True+-- * snapPartial False+defaultSnapshotCreateSettings :: SnapshotCreateSettings+defaultSnapshotCreateSettings = SnapshotCreateSettings {+      snapWaitForCompletion = False+    , snapIndices = Nothing+    , snapIgnoreUnavailable = False+    , snapIncludeGlobalState = True+    , snapPartial = False+    }+++data SnapshotSelection = SnapshotList (NonEmpty SnapshotPattern)+                       | AllSnapshots deriving (Eq, Generic, Show, Typeable)+++-- | Either specifies an exact snapshot name or one with globs in it,+-- e.g. @SnapPattern "foo*"@ __NOTE__: Patterns are not supported on+-- ES < 1.7+data SnapshotPattern = ExactSnap SnapshotName+                     | SnapPattern Text+                     deriving (Eq, Generic, Show, Typeable)+++-- | General information about the state of a snapshot. Has some+-- redundancies with 'SnapshotStatus'+data SnapshotInfo = SnapshotInfo {+      snapInfoShards    :: ShardResult+    , snapInfoFailures  :: [SnapshotShardFailure]+    , snapInfoDuration  :: NominalDiffTime+    , snapInfoEndTime   :: UTCTime+    , snapInfoStartTime :: UTCTime+    , snapInfoState     :: SnapshotState+    , snapInfoIndices   :: [IndexName]+    , snapInfoName      :: SnapshotName+    } deriving (Eq, Generic, Show, Typeable)+++instance FromJSON SnapshotInfo where+  parseJSON = withObject "SnapshotInfo" parse+    where+      parse o = SnapshotInfo <$> o .: "shards"+                             <*> o .: "failures"+                             <*> (unMS <$> o .: "duration_in_millis")+                             <*> (posixMS <$> o .: "end_time_in_millis")+                             <*> (posixMS <$> o .: "start_time_in_millis")+                             <*> o .: "state"+                             <*> o .: "indices"+                             <*> o .: "snapshot"++data SnapshotShardFailure = SnapshotShardFailure {+      snapShardFailureIndex   :: IndexName+    , snapShardFailureNodeId  :: Maybe NodeName -- I'm not 100% sure this isn't actually 'FullNodeId'+    , snapShardFailureReason  :: Text+    , snapShardFailureShardId :: ShardId+    } deriving (Eq, Show, Generic, Typeable)+++instance FromJSON SnapshotShardFailure where+  parseJSON = withObject "SnapshotShardFailure" parse+    where+      parse o = SnapshotShardFailure <$> o .: "index"+                                     <*> o .:? "node_id"+                                     <*> o .: "reason"+                                     <*> o .: "shard_id"+++newtype ShardId = ShardId { shardId :: Int }+                deriving (Eq, Show, Generic, Typeable, FromJSON)++-- | Milliseconds+newtype MS = MS NominalDiffTime+++-- keeps the unexported constructor warnings at bay+unMS :: MS -> NominalDiffTime+unMS (MS t) = t+++instance FromJSON MS where+  parseJSON = withScientific "MS" (return . MS . parse)+    where+      parse n = fromInteger ((truncate n) * 1000)+++data SnapshotState = SnapshotInit+                   | SnapshotStarted+                   | SnapshotSuccess+                   | SnapshotFailed+                   | SnapshotAborted+                   | SnapshotMissing+                   | SnapshotWaiting+                   deriving (Show, Eq, Generic, Typeable)++instance FromJSON SnapshotState where+  parseJSON = withText "SnapshotState" parse+    where+      parse "INIT"    = return SnapshotInit+      parse "STARTED" = return SnapshotStarted+      parse "SUCCESS" = return SnapshotSuccess+      parse "FAILED"  = return SnapshotFailed+      parse "ABORTED" = return SnapshotAborted+      parse "MISSING" = return SnapshotMissing+      parse "WAITING" = return SnapshotWaiting+      parse t         = fail ("Invalid snapshot state " <> T.unpack t)+++newtype SnapshotName = SnapshotName { snapshotName :: Text }+                     deriving (Show, Eq, Ord, Generic, Typeable, ToJSON, FromJSON)+++data SnapshotRestoreSettings = SnapshotRestoreSettings {+      snapRestoreWaitForCompletion      :: Bool+      -- ^ Should the API call return immediately after initializing+      -- the restore or wait until completed? Note that if this is+      -- enabled, it could wait a long time, so you should adjust your+      -- 'ManagerSettings' accordingly to set long timeouts or+      -- explicitly handle timeouts.+    , snapRestoreIndices                :: Maybe IndexSelection+    -- ^ Nothing will restore all indices in the snapshot. Just [] is+    -- permissable and will essentially be a no-op restore.+    , snapRestoreIgnoreUnavailable      :: Bool+    -- ^ If set to True, any indices that do not exist will be ignored+    -- during snapshot rather than failing the restore.+    , snapRestoreIncludeGlobalState     :: Bool+    -- ^ If set to false, will ignore any global state in the snapshot+    -- and will not restore it.+    , snapRestoreRenamePattern          :: Maybe RestoreRenamePattern+    -- ^ A regex pattern for matching indices. Used with+    -- 'snapRestoreRenameReplacement', the restore can reference the+    -- matched index and create a new index name upon restore.+    , snapRestoreRenameReplacement      :: Maybe (NonEmpty RestoreRenameToken)+    -- ^ Expression of how index renames should be constructed.+    , snapRestorePartial                :: Bool+    -- ^ If some indices fail to restore, should the process proceed?+    , snapRestoreIncludeAliases         :: Bool+    -- ^ Should the restore also restore the aliases captured in the+    -- snapshot.+    , snapRestoreIndexSettingsOverrides :: Maybe RestoreIndexSettings+    -- ^ Settings to apply during the restore process. __NOTE:__ This+    -- option is not supported in ES < 1.5 and should be set to+    -- Nothing in that case.+    , snapRestoreIgnoreIndexSettings    :: Maybe (NonEmpty Text)+    -- ^ This type could be more rich but it isn't clear which+    -- settings are allowed to be ignored during restore, so we're+    -- going with including this feature in a basic form rather than+    -- omitting it. One example here would be+    -- "index.refresh_interval". Any setting specified here will+    -- revert back to the server default during the restore process.+    } deriving (Eq, Generic, Show, Typeable)++-- | Regex-stype pattern, e.g. "index_(.+)" to match index names+newtype RestoreRenamePattern = RestoreRenamePattern { rrPattern :: Text }+                             deriving (Show, Eq, Generic, Typeable, Ord, ToJSON)+++-- | A single token in a index renaming scheme for a restore. These+-- are concatenated into a string before being sent to+-- ElasticSearch. Check out these Java+-- <https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html docs> to find out more if you're into that sort of thing.+data RestoreRenameToken = RRTLit Text+                        -- ^ Just a literal string of characters+                        | RRSubWholeMatch+                        -- ^ Equivalent to $0. The entire matched pattern, not any subgroup+                        | RRSubGroup RRGroupRefNum+                        -- ^ A specific reference to a group number+                        deriving (Show, Eq, Generic, Typeable)+++-- | A group number for regex matching. Only values from 1-9 are+-- supported. Construct with 'mkRRGroupRefNum'+newtype RRGroupRefNum = RRGroupRefNum { rrGroupRefNum :: Int }+                      deriving (Show, Eq, Generic, Typeable, Ord)++instance Bounded RRGroupRefNum where+  minBound = RRGroupRefNum 1+  maxBound = RRGroupRefNum 9+++-- | Only allows valid group number references (1-9).+mkRRGroupRefNum :: Int -> Maybe RRGroupRefNum+mkRRGroupRefNum i+  | i >= (rrGroupRefNum minBound) && i <= (rrGroupRefNum maxBound) =+    Just $ RRGroupRefNum i+  | otherwise = Nothing+++-- | Reasonable defaults for snapshot restores+--+-- * snapRestoreWaitForCompletion False+-- * snapRestoreIndices Nothing+-- * snapRestoreIgnoreUnavailable False+-- * snapRestoreIncludeGlobalState True+-- * snapRestoreRenamePattern Nothing+-- * snapRestoreRenameReplacement Nothing+-- * snapRestorePartial False+-- * snapRestoreIncludeAliases True+-- * snapRestoreIndexSettingsOverrides Nothing+-- * snapRestoreIgnoreIndexSettings Nothing+defaultSnapshotRestoreSettings :: SnapshotRestoreSettings+defaultSnapshotRestoreSettings = SnapshotRestoreSettings {+      snapRestoreWaitForCompletion = False+    , snapRestoreIndices = Nothing+    , snapRestoreIgnoreUnavailable  = False+    , snapRestoreIncludeGlobalState = True+    , snapRestoreRenamePattern = Nothing+    , snapRestoreRenameReplacement = Nothing+    , snapRestorePartial = False+    , snapRestoreIncludeAliases = True+    , snapRestoreIndexSettingsOverrides = Nothing+    , snapRestoreIgnoreIndexSettings = Nothing+    }+++-- | Index settings that can be overridden. The docs only mention you+-- can update number of replicas, but there may be more. You+-- definitely cannot override shard count.+data RestoreIndexSettings = RestoreIndexSettings {+      restoreOverrideReplicas :: Maybe ReplicaCount+    } deriving (Show, Eq, Generic, Typeable)+++instance ToJSON RestoreIndexSettings where+  toJSON RestoreIndexSettings {..} = object prs+    where+      prs = catMaybes [("index.number_of_replicas" .=) <$> restoreOverrideReplicas]+++instance FromJSON NodesInfo where+  parseJSON = withObject "NodesInfo" parse+    where+      parse o = do+        nodes <- o .: "nodes"+        infos <- forM (HM.toList nodes) $ \(fullNID, v) -> do+          node <- parseJSON v+          parseNodeInfo (FullNodeId fullNID) node+        cn <- o .: "cluster_name"+        return (NodesInfo infos cn)++instance FromJSON NodesStats where+  parseJSON = withObject "NodesStats" parse+    where+      parse o = do+        nodes <- o .: "nodes"+        stats <- forM (HM.toList nodes) $ \(fullNID, v) -> do+          node <- parseJSON v+          parseNodeStats (FullNodeId fullNID) node+        cn <- o .: "cluster_name"+        return (NodesStats stats cn)++instance FromJSON NodeBreakerStats where+  parseJSON = withObject "NodeBreakerStats" parse+    where+      parse o = NodeBreakerStats <$> o .: "tripped"+                                 <*> o .: "overhead"+                                 <*> o .: "estimated_size_in_bytes"+                                 <*> o .: "limit_size_in_bytes"++instance FromJSON NodeHTTPStats where+  parseJSON = withObject "NodeHTTPStats" parse+    where+      parse o = NodeHTTPStats <$> o .: "total_opened"+                              <*> o .: "current_open"++instance FromJSON NodeTransportStats where+  parseJSON = withObject "NodeTransportStats" parse+    where+      parse o = NodeTransportStats <$> o .: "tx_size_in_bytes"+                                   <*> o .: "tx_count"+                                   <*> o .: "rx_size_in_bytes"+                                   <*> o .: "rx_count"+                                   <*> o .: "server_open"++instance FromJSON NodeFSStats where+  parseJSON = withObject "NodeFSStats" parse+    where+      parse o = NodeFSStats <$> o .: "data"+                            <*> o .: "total"+                            <*> (posixMS <$> o .: "timestamp")++instance FromJSON NodeDataPathStats where+  parseJSON = withObject "NodeDataPathStats" parse+    where+      parse o =+        NodeDataPathStats <$> (fmap unStringlyTypedDouble <$> o .:? "disk_service_time")+                          <*> (fmap unStringlyTypedDouble <$> o .:? "disk_queue")+                          <*> o .:? "disk_io_size_in_bytes"+                          <*> o .:? "disk_write_size_in_bytes"+                          <*> o .:? "disk_read_size_in_bytes"+                          <*> o .:? "disk_io_op"+                          <*> o .:? "disk_writes"+                          <*> o .:? "disk_reads"+                          <*> o .: "available_in_bytes"+                          <*> o .: "free_in_bytes"+                          <*> o .: "total_in_bytes"+                          <*> o .:? "type"+                          <*> o .: "dev"+                          <*> o .: "mount"+                          <*> o .: "path"++newtype StringlyTypedDouble = StringlyTypedDouble { unStringlyTypedDouble :: Double }+++instance FromJSON StringlyTypedDouble where+  parseJSON = fmap StringlyTypedDouble . parseJSON . unStringlyTypeJSON+++instance FromJSON NodeFSTotalStats where+  parseJSON = withObject "NodeFSTotalStats" parse+    where+      parse o = NodeFSTotalStats <$> (fmap unStringlyTypedDouble <$> o .:? "disk_service_time")+                                 <*> (fmap unStringlyTypedDouble <$> o .:? "disk_queue")+                                 <*> o .:? "disk_io_size_in_bytes"+                                 <*> o .:? "disk_write_size_in_bytes"+                                 <*> o .:? "disk_read_size_in_bytes"+                                 <*> o .:? "disk_io_op"+                                 <*> o .:? "disk_writes"+                                 <*> o .:? "disk_reads"+                                 <*> o .: "available_in_bytes"+                                 <*> o .: "free_in_bytes"+                                 <*> o .: "total_in_bytes"++instance FromJSON NodeNetworkStats where+  parseJSON = withObject "NodeNetworkStats" parse+    where+      parse o = do+        tcp <- o .: "tcp"+        NodeNetworkStats <$> tcp .: "out_rsts"+                         <*> tcp .: "in_errs"+                         <*> tcp .: "attempt_fails"+                         <*> tcp .: "estab_resets"+                         <*> tcp .: "retrans_segs"+                         <*> tcp .: "out_segs"+                         <*> tcp .: "in_segs"+                         <*> tcp .: "curr_estab"+                         <*> tcp .: "passive_opens"+                         <*> tcp .: "active_opens"++instance FromJSON NodeThreadPoolsStats where+  parseJSON = withObject "NodeThreadPoolsStats" parse+    where+      parse o = NodeThreadPoolsStats <$> o .: "snapshot"+                                     <*> o .: "bulk"+                                     <*> o .: "merge"+                                     <*> o .: "get"+                                     <*> o .: "management"+                                     <*> o .:? "fetch_shard_store"+                                     <*> o .: "optimize"+                                     <*> o .: "flush"+                                     <*> o .: "search"+                                     <*> o .: "warmer"+                                     <*> o .: "generic"+                                     <*> o .: "suggest"+                                     <*> o .: "refresh"+                                     <*> o .: "index"+                                     <*> o .:? "listener"+                                     <*> o .:? "fetch_shard_started"+                                     <*> o .: "percolate"+instance FromJSON NodeThreadPoolStats where+    parseJSON = withObject "NodeThreadPoolStats" parse+      where+        parse o = NodeThreadPoolStats <$> o .: "completed"+                                      <*> o .: "largest"+                                      <*> o .: "rejected"+                                      <*> o .: "active"+                                      <*> o .: "queue"+                                      <*> o .: "threads"++instance FromJSON NodeJVMStats where+  parseJSON = withObject "NodeJVMStats" parse+    where+      parse o = do+        bufferPools <- o .: "buffer_pools"+        mapped <- bufferPools .: "mapped"+        direct <- bufferPools .: "direct"+        gc <- o .: "gc"+        collectors <- gc .: "collectors"+        oldC <- collectors .: "old"+        youngC <- collectors .: "young"+        threads <- o .: "threads"+        mem <- o .: "mem"+        pools <- mem .: "pools"+        oldM <- pools .: "old"+        survivorM <- pools .: "survivor"+        youngM <- pools .: "young"+        NodeJVMStats <$> pure mapped+                     <*> pure direct+                     <*> pure oldC+                     <*> pure youngC+                     <*> threads .: "peak_count"+                     <*> threads .: "count"+                     <*> pure oldM+                     <*> pure survivorM+                     <*> pure youngM+                     <*> mem .: "non_heap_committed_in_bytes"+                     <*> mem .: "non_heap_used_in_bytes"+                     <*> mem .: "heap_max_in_bytes"+                     <*> mem .: "heap_committed_in_bytes"+                     <*> mem .: "heap_used_percent"+                     <*> mem .: "heap_used_in_bytes"+                     <*> (unMS <$> o .: "uptime_in_millis")+                     <*> (posixMS <$> o .: "timestamp")++instance FromJSON JVMBufferPoolStats where+  parseJSON = withObject "JVMBufferPoolStats" parse+    where+      parse o = JVMBufferPoolStats <$> o .: "total_capacity_in_bytes"+                                   <*> o .: "used_in_bytes"+                                   <*> o .: "count"++instance FromJSON JVMGCStats where+  parseJSON = withObject "JVMGCStats" parse+    where+      parse o = JVMGCStats <$> (unMS <$> o .: "collection_time_in_millis")+                           <*> o .: "collection_count"++instance FromJSON JVMPoolStats where+  parseJSON = withObject "JVMPoolStats" parse+    where+      parse o = JVMPoolStats <$> o .: "peak_max_in_bytes"+                             <*> o .: "peak_used_in_bytes"+                             <*> o .: "max_in_bytes"+                             <*> o .: "used_in_bytes"++instance FromJSON NodeProcessStats where+  parseJSON = withObject "NodeProcessStats" parse+    where+      parse o = do+        mem <- o .: "mem"+        cpu <- o .: "cpu"+        NodeProcessStats <$> mem .: "total_virtual_in_bytes"+                         <*> mem .: "share_in_bytes"+                         <*> mem .: "resident_in_bytes"+                         <*> (unMS <$> cpu .: "total_in_millis")+                         <*> (unMS <$> cpu .: "user_in_millis")+                         <*> (unMS <$> cpu .: "sys_in_millis")+                         <*> cpu .: "percent"+                         <*> o .: "open_file_descriptors"+                         <*> (posixMS <$> o .: "timestamp")++instance FromJSON NodeOSStats where+  parseJSON = withObject "NodeOSStats" parse+    where+      parse o = do+        swap <- o .: "swap"+        mem <- o .: "mem"+        cpu <- o .: "cpu"+        load <- o .:? "load_average"+        NodeOSStats <$> swap .: "free_in_bytes"+                    <*> swap .: "used_in_bytes"+                    <*> mem .: "actual_used_in_bytes"+                    <*> mem .: "actual_free_in_bytes"+                    <*> mem .: "used_percent"+                    <*> mem .: "free_percent"+                    <*> mem .: "used_in_bytes"+                    <*> mem .: "free_in_bytes"+                    <*> cpu .: "stolen"+                    <*> cpu .: "usage"+                    <*> cpu .: "idle"+                    <*> cpu .: "user"+                    <*> cpu .: "sys"+                    <*> pure load+                    <*> (unMS <$> o .: "uptime_in_millis")+                    <*> (posixMS <$> o .: "timestamp")++instance FromJSON LoadAvgs where+  parseJSON = withArray "LoadAvgs" parse+    where+      parse v = case V.toList v of+        [one, five, fifteen] -> LoadAvgs <$> parseJSON one+                                         <*> parseJSON five+                                         <*> parseJSON fifteen+        _                    -> fail "Expecting a triple of Doubles"++instance FromJSON NodeIndicesStats where+  parseJSON = withObject "NodeIndicesStats" parse+    where+      parse o = do+        let (.::) mv k = case mv of+              Just v -> Just <$> v .: k+              Nothing -> pure Nothing+        mRecovery <- o .:? "recovery"+        mQueryCache <- o .:? "query_cache"+        suggest <- o .: "suggest"+        translog <- o .: "translog"+        segments <- o .: "segments"+        completion <- o .: "completion"+        percolate <- o .: "percolate"+        fielddata <- o .: "fielddata"+        idCache <- o .: "id_cache"+        filterCache <- o .: "filter_cache"+        warmer <- o .: "warmer"+        flush <- o .: "flush"+        refresh <- o .: "refresh"+        merges <- o .: "merges"+        search <- o .: "search"+        getStats <- o .: "get"+        indexing <- o .: "indexing"+        store <- o .: "store"+        docs <- o .: "docs"+        NodeIndicesStats <$> (fmap unMS <$> mRecovery .:: "throttle_time_in_millis")+                         <*> mRecovery .:: "current_as_target"+                         <*> mRecovery .:: "current_as_source"+                         <*> mQueryCache .:: "miss_count"+                         <*> mQueryCache .:: "hit_count"+                         <*> mQueryCache .:: "evictions"+                         <*> mQueryCache .:: "memory_size_in_bytes"+                         <*> suggest .: "current"+                         <*> (unMS <$> suggest .: "time_in_millis")+                         <*> suggest .: "total"+                         <*> translog .: "size_in_bytes"+                         <*> translog .: "operations"+                         <*> segments .:? "fixed_bit_set_memory_in_bytes"+                         <*> segments .: "version_map_memory_in_bytes"+                         <*> segments .:? "index_writer_max_memory_in_bytes"+                         <*> segments .: "index_writer_memory_in_bytes"+                         <*> segments .: "memory_in_bytes"+                         <*> segments .: "count"+                         <*> completion .: "size_in_bytes"+                         <*> percolate .: "queries"+                         <*> percolate .: "memory_size_in_bytes"+                         <*> percolate .: "current"+                         <*> (unMS <$> percolate .: "time_in_millis")+                         <*> percolate .: "total"+                         <*> fielddata .: "evictions"+                         <*> fielddata .: "memory_size_in_bytes"+                         <*> idCache .: "memory_size_in_bytes"+                         <*> filterCache .: "evictions"+                         <*> filterCache .: "memory_size_in_bytes"+                         <*> (unMS <$> warmer .: "total_time_in_millis")+                         <*> warmer .: "total"+                         <*> warmer .: "current"+                         <*> (unMS <$> flush .: "total_time_in_millis")+                         <*> flush .: "total"+                         <*> (unMS <$> refresh .: "total_time_in_millis")+                         <*> refresh .: "total"+                         <*> merges .: "total_size_in_bytes"+                         <*> merges .: "total_docs"+                         <*> (unMS <$> merges .: "total_time_in_millis")+                         <*> merges .: "total"+                         <*> merges .: "current_size_in_bytes"+                         <*> merges .: "current_docs"+                         <*> merges .: "current"+                         <*> search .: "fetch_current"+                         <*> (unMS <$> search .: "fetch_time_in_millis")+                         <*> search .: "fetch_total"+                         <*> search .: "query_current"+                         <*> (unMS <$> search .: "query_time_in_millis")+                         <*> search .: "query_total"+                         <*> search .: "open_contexts"+                         <*> getStats .: "current"+                         <*> (unMS <$> getStats .: "missing_time_in_millis")+                         <*> getStats .: "missing_total"+                         <*> (unMS <$> getStats .: "exists_time_in_millis")+                         <*> getStats .: "exists_total"+                         <*> (unMS <$> getStats .: "time_in_millis")+                         <*> getStats .: "total"+                         <*> (fmap unMS <$> indexing .:? "throttle_time_in_millis")+                         <*> indexing .:? "is_throttled"+                         <*> indexing .:? "noop_update_total"+                         <*> indexing .: "delete_current"+                         <*> (unMS <$> indexing .: "delete_time_in_millis")+                         <*> indexing .: "delete_total"+                         <*> indexing .: "index_current"+                         <*> (unMS <$> indexing .: "index_time_in_millis")+                         <*> indexing .: "index_total"+                         <*> (unMS <$> store .: "throttle_time_in_millis")+                         <*> store .: "size_in_bytes"+                         <*> docs .: "deleted"+                         <*> docs .: "count"++instance FromJSON NodeBreakersStats where+  parseJSON = withObject "NodeBreakersStats" parse+    where+      parse o = NodeBreakersStats <$> o .: "parent"+                                  <*> o .: "request"+                                  <*> o .: "fielddata"++parseNodeStats :: FullNodeId -> Object -> Parser NodeStats+parseNodeStats fnid o = do+  NodeStats <$> o .: "name"+            <*> pure fnid+            <*> o .:? "breakers"+            <*> o .: "http"+            <*> o .: "transport"+            <*> o .: "fs"+            <*> o .: "network"+            <*> o .: "thread_pool"+            <*> o .: "jvm"+            <*> o .: "process"+            <*> o .: "os"+            <*> o .: "indices"++parseNodeInfo :: FullNodeId -> Object -> Parser NodeInfo+parseNodeInfo nid o =+  NodeInfo <$> o .: "http_address"+           <*> o .: "build"+           <*> o .: "version"+           <*> o .: "ip"+           <*> o .: "host"+           <*> o .: "transport_address"+           <*> o .: "name"+           <*> pure nid+           <*> o .: "plugins"+           <*> o .: "http"+           <*> o .: "transport"+           <*> o .: "network"+           <*> o .: "thread_pool"+           <*> o .: "jvm"+           <*> o .: "process"+           <*> o .: "os"+           <*> o .: "settings"++instance FromJSON NodePluginInfo where+  parseJSON = withObject "NodePluginInfo" parse+    where+      parse o = NodePluginInfo <$> o .:  "site"+                               <*> o .:  "jvm"+                               <*> o .:  "description"+                               <*> o .: "version"+                               <*> o .:  "name"++instance FromJSON NodeHTTPInfo where+  parseJSON = withObject "NodeHTTPInfo" parse+    where+      parse o = NodeHTTPInfo <$> o .: "max_content_length_in_bytes"+                             <*> parseJSON (Object o)++instance FromJSON BoundTransportAddress where+  parseJSON = withObject "BoundTransportAddress" parse+    where+      parse o = BoundTransportAddress <$> o .: "publish_address"+                                      <*> o .: "bound_address"++instance FromJSON NodeOSInfo where+  parseJSON = withObject "NodeOSInfo" parse+    where+      parse o = do+        swap <- o .: "swap"+        mem <- o .: "mem"+        NodeOSInfo <$> swap .: "total_in_bytes"+                   <*> mem .: "total_in_bytes"+                   <*> o .: "cpu"+                   <*> o .: "available_processors"+                   <*> (unMS <$> o .: "refresh_interval_in_millis")+++instance FromJSON CPUInfo where+  parseJSON = withObject "CPUInfo" parse+    where+      parse o = CPUInfo <$> o .: "cache_size_in_bytes"+                        <*> o .: "cores_per_socket"+                        <*> o .: "total_sockets"+                        <*> o .: "total_cores"+                        <*> o .: "mhz"+                        <*> o .: "model"+                        <*> o .: "vendor"++instance FromJSON NodeProcessInfo where+  parseJSON = withObject "NodeProcessInfo" parse+    where+      parse o = NodeProcessInfo <$> o .: "mlockall"+                                <*> o .: "max_file_descriptors"+                                <*> o .: "id"+                                <*> (unMS <$> o .: "refresh_interval_in_millis")++instance FromJSON NodeJVMInfo where+  parseJSON = withObject "NodeJVMInfo" parse+    where+      parse o = NodeJVMInfo <$> o .: "memory_pools"+                            <*> o .: "gc_collectors"+                            <*> o .: "mem"+                            <*> (posixMS <$> o .: "start_time_in_millis")+                            <*> o .: "vm_vendor"+                            <*> o .: "vm_version"+                            <*> o .: "vm_name"+                            <*> (unJVMVersion <$> o .: "version")+                            <*> o .: "pid"++instance FromJSON JVMVersion where+  parseJSON (String t) =+    JVMVersion <$> parseJSON (String (T.replace "_" "." t))+  parseJSON v = JVMVersion <$> parseJSON v++instance FromJSON JVMMemoryInfo where+  parseJSON = withObject "JVMMemoryInfo" parse+    where+      parse o = JVMMemoryInfo <$> o .: "direct_max_in_bytes"+                              <*> o .: "non_heap_max_in_bytes"+                              <*> o .: "non_heap_init_in_bytes"+                              <*> o .: "heap_max_in_bytes"+                              <*> o .: "heap_init_in_bytes"++instance FromJSON NodeThreadPoolsInfo where+  parseJSON = withObject "NodeThreadPoolsInfo" parse+    where+      parse o = NodeThreadPoolsInfo <$> o .: "refresh"+                                    <*> o .: "management"+                                    <*> o .: "percolate"+                                    <*> o .:? "listener"+                                    <*> o .:? "fetch_shard_started"+                                    <*> o .: "search"+                                    <*> o .: "flush"+                                    <*> o .: "warmer"+                                    <*> o .: "optimize"+                                    <*> o .: "bulk"+                                    <*> o .: "suggest"+                                    <*> o .: "merge"+                                    <*> o .: "snapshot"+                                    <*> o .: "get"+                                    <*> o .:? "fetch_shard_store"+                                    <*> o .: "index"+                                    <*> o .: "generic"++instance FromJSON NodeThreadPoolInfo where+  parseJSON = withObject "NodeThreadPoolInfo" parse+    where+      parse o = do+        ka <- maybe (return Nothing) (fmap Just . parseStringInterval) =<< o .:? "keep_alive"+        NodeThreadPoolInfo <$> (parseJSON . unStringlyTypeJSON =<< o .: "queue_size")+                           <*> pure ka+                           <*> o .:? "min"+                           <*> o .:? "max"+                           <*> o .: "type"++parseStringInterval :: (Monad m) => String -> m NominalDiffTime+parseStringInterval s = case span isNumber s of+  ("", _) -> fail "Invalid interval"+  (nS, unitS) -> case (readMay nS, readMay unitS) of+    (Just n, Just unit) -> return (fromInteger (n * unitNDT unit))+    (Nothing, _) -> fail "Invalid interval number"+    (_, Nothing) -> fail "Invalid interval unit"+  where+    unitNDT Seconds = 1+    unitNDT Minutes = 60+    unitNDT Hours   = 60 * 60+    unitNDT Days    = 24 * 60 * 60+    unitNDT Weeks   = 7 * 24 * 60 * 60++instance FromJSON ThreadPoolSize where+  parseJSON v = parseAsNumber v <|> parseAsString v+    where+      parseAsNumber = parseAsInt <=< parseJSON+      parseAsInt (-1) = return ThreadPoolUnbounded+      parseAsInt n+        | n >= 0 = return (ThreadPoolBounded n)+        | otherwise = fail "Thread pool size must be >= -1."+      parseAsString = withText "ThreadPoolSize" $ \t ->+        case first (readMay . T.unpack) (T.span isNumber t) of+          (Just n, "k") -> return (ThreadPoolBounded (n * 1000))+          (Just n, "") -> return (ThreadPoolBounded n)+          _ -> fail ("Invalid thread pool size " <> T.unpack t)++instance FromJSON ThreadPoolType where+  parseJSON = withText "ThreadPoolType" parse+    where+      parse "scaling" = return ThreadPoolScaling+      parse "fixed"   = return ThreadPoolFixed+      parse "cached"  = return ThreadPoolCached+      parse e         = fail ("Unexpected thread pool type" <> T.unpack e)++instance FromJSON NodeTransportInfo where+  parseJSON = withObject "NodeTransportInfo" parse+    where+      parse o = NodeTransportInfo <$> (maybe (return mempty) parseProfiles =<< o .:? "profiles")+                                  <*> parseJSON (Object o)+      parseProfiles (Object o) | HM.null o = return []+      parseProfiles v@(Array _) = parseJSON v+      parseProfiles Null = return []+      parseProfiles _ = fail "Could not parse profiles"++instance FromJSON NodeNetworkInfo where+  parseJSON = withObject "NodeNetworkInfo" parse+    where+      parse o = NodeNetworkInfo <$> o .: "primary_interface"+                                <*> (unMS <$> o .: "refresh_interval_in_millis")+++instance FromJSON NodeNetworkInterface where+  parseJSON = withObject "NodeNetworkInterface" parse+    where+      parse o = NodeNetworkInterface <$> o .: "mac_address"+                                     <*> o .: "name"+                                     <*> o .: "address"++newtype MaybeNA a = MaybeNA { unMaybeNA :: Maybe a }+  deriving (Show, Eq)++instance FromJSON a => FromJSON (MaybeNA a) where+  parseJSON (String "NA") = pure $ MaybeNA Nothing+  parseJSON o = MaybeNA . Just <$> parseJSON o
src/Database/Bloodhound/Types/Internal.hs view
@@ -22,8 +22,9 @@     ) where  -import           Control.Applicative+import           Control.Applicative  as A import           Control.Monad.Reader+import           Data.Aeson import           Data.Text            (Text) import           Data.Typeable        (Typeable) import           GHC.Generics         (Generic)@@ -43,7 +44,7 @@  {-| 'Server' is used with the client functions to point at the ES instance -}-newtype Server = Server Text deriving (Eq, Show, Generic, Typeable)+newtype Server = Server Text deriving (Eq, Show, Generic, Typeable, FromJSON)  {-| All API calls to Elasticsearch operate within     MonadBH@@ -51,6 +52,6 @@     own monad transformer stack. A default instance for a ReaderT and     alias 'BH' is provided for the simple case. -}-class (Functor m, Applicative m, MonadIO m) => MonadBH m where+class (Functor m, A.Applicative m, MonadIO m) => MonadBH m where   getBHEnv :: m BHEnv 
tests/tests.hs view
@@ -1,23 +1,28 @@+{-# LANGUAGE CPP                        #-} {-# LANGUAGE DefaultSignatures          #-}+{-# LANGUAGE DeriveDataTypeable         #-} {-# LANGUAGE DeriveGeneric              #-} {-# LANGUAGE FlexibleContexts           #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings          #-}+{-# LANGUAGE RecordWildCards            #-} {-# LANGUAGE ScopedTypeVariables        #-}-{-# LANGUAGE TemplateHaskell            #-} {-# LANGUAGE TypeOperators              #-} {-# OPTIONS_GHC -fno-warn-orphans #-}+#if __GLASGOW_HASKELL__ < 800+{-# OPTIONS_GHC -fcontext-stack=100 #-}+#endif module Main where  import           Control.Applicative import           Control.Error-import           Control.Exception+import           Control.Exception               (evaluate) import           Control.Monad+import           Control.Monad.Catch import           Control.Monad.Reader import           Data.Aeson import           Data.Aeson.Types                (parseEither) import qualified Data.ByteString.Lazy.Char8      as BL8-import           Data.DeriveTH import qualified Data.HashMap.Strict             as HM import           Data.List                       (nub) import qualified Data.List                       as L@@ -25,6 +30,7 @@ import qualified Data.List.NonEmpty              as NE import qualified Data.Map.Strict                 as M import           Data.Monoid+import           Data.Ord                        (comparing) import           Data.Proxy import           Data.Text                       (Text) import qualified Data.Text                       as T@@ -33,17 +39,25 @@                                                   secondsToDiffTime) import           Data.Typeable import qualified Data.Vector                     as V+import qualified Data.Version                    as Vers import           Database.Bloodhound import           GHC.Generics                    as G import           Network.HTTP.Client             hiding (Proxy)+import qualified Network.HTTP.Types.Method       as NHTM import qualified Network.HTTP.Types.Status       as NHTS+import qualified Network.URI                     as URI import           Prelude                         hiding (filter)+import           System.IO.Temp+import           System.Posix.Files import           Test.Hspec import           Test.QuickCheck.Property.Monoid (T (..), eq, prop_Monoid)  import           Test.Hspec.QuickCheck           (prop) import           Test.QuickCheck +import qualified Generics.SOP as SOP+import qualified Generics.SOP.GGP as SOP+ testServer  :: Server testServer  = Server "http://localhost:9200" testIndex   :: IndexName@@ -54,61 +68,87 @@ withTestEnv :: BH IO a -> IO a withTestEnv = withBH defaultManagerSettings testServer -validateStatus :: Response body -> Int -> Expectation+validateStatus :: Show body => Response body -> Int -> Expectation validateStatus resp expected =-  (NHTS.statusCode $ responseStatus resp)-  `shouldBe` (expected :: Int)+  if actual == expected+    then return ()+    else expectationFailure ("Expected " <> show expected <> " but got " <> show actual <> ": " <> show body)+  where+    actual = NHTS.statusCode (responseStatus resp)+    body = responseBody resp -createExampleIndex :: BH IO Reply+createExampleIndex :: (MonadBH m) => m Reply createExampleIndex = createIndex (IndexSettings (ShardCount 1) (ReplicaCount 0)) testIndex-deleteExampleIndex :: BH IO Reply+deleteExampleIndex :: (MonadBH m) => m Reply deleteExampleIndex = deleteIndex testIndex -data ServerVersion = ServerVersion Int Int Int deriving (Show, Eq, Ord)+es13 :: Vers.Version+es13 = Vers.Version [1, 3, 0] [] -es13 :: ServerVersion-es13 = ServerVersion 1 3 0+es12 :: Vers.Version+es12 = Vers.Version [1, 2, 0] [] -es12 :: ServerVersion-es12 = ServerVersion 1 2 0+es11 :: Vers.Version+es11 = Vers.Version [1, 1, 0] [] -es11 :: ServerVersion-es11 = ServerVersion 1 1 0+es14 :: Vers.Version+es14 = Vers.Version [1, 4, 0] [] -serverBranch :: ServerVersion -> ServerVersion-serverBranch (ServerVersion majorVer minorVer patchVer) =-  ServerVersion majorVer minorVer patchVer+es15 :: Vers.Version+es15 = Vers.Version [1, 5, 0] [] -mkServerVersion :: [Int] -> Maybe ServerVersion-mkServerVersion [majorVer, minorVer, patchVer] =-  Just (ServerVersion majorVer minorVer patchVer)-mkServerVersion _                 = Nothing+es16 :: Vers.Version+es16 = Vers.Version [1, 6, 0] [] -getServerVersion :: IO (Maybe ServerVersion)-getServerVersion = liftM extractVersion (withTestEnv getStatus)+es20 :: Vers.Version+es20 = Vers.Version [2, 0, 0] []++getServerVersion :: IO (Maybe Vers.Version)+getServerVersion = fmap extractVersion <$> withTestEnv getStatus   where-    version'                    = T.splitOn "." . number . version-    toInt                       = read . T.unpack-    parseVersion v              = map toInt (version' v)-    extractVersion              = join . liftM (mkServerVersion . parseVersion)+    extractVersion              = versionNumber . number . version -testServerBranch :: IO (Maybe ServerVersion)-testServerBranch = getServerVersion >>= \v -> return $ liftM serverBranch v+-- | Get configured repo paths for snapshotting. Note that by default+-- this is not enabled and if we are over es 1.5, we won't be able to+-- test snapshotting. Note that this can and should be part of the+-- client functionality in a much less ad-hoc incarnation.+getRepoPaths :: IO [FilePath]+getRepoPaths = withTestEnv $ do+  bhe <- getBHEnv+  let Server s = bhServer bhe+  let tUrl = s <> "/" <> "_nodes"+  initReq <- parseRequest (URI.escapeURIString URI.isAllowedInURI (T.unpack tUrl))+  let req = setRequestIgnoreStatus $ initReq { method = NHTM.methodGet }+  Right (Object o) <- parseEsResponse =<< liftIO (httpLbs req (bhManager bhe))+  return $ fromMaybe mempty $ do+    Object nodes <- HM.lookup "nodes" o+    Object firstNode <- snd <$> headMay (HM.toList nodes)+    Object settings <- HM.lookup "settings" firstNode+    Object path <- HM.lookup "path" settings+    Array repo <- HM.lookup "repo" path+    return [ T.unpack t | String t <- V.toList repo] -atleast :: ServerVersion -> IO Bool-atleast v = testServerBranch >>= \x -> return $ x >= Just (serverBranch v)+-- | 1.5 and earlier don't care about repo paths+canSnapshot :: IO Bool+canSnapshot = do+  caresAboutRepos <- atleast es16+  repoPaths <- getRepoPaths+  return (not caresAboutRepos || not (null (repoPaths))) -atmost :: ServerVersion -> IO Bool-atmost v = testServerBranch >>= \x -> return $ x <= Just (serverBranch v)+atleast :: Vers.Version -> IO Bool+atleast v = getServerVersion >>= \x -> return $ x >= Just v -is :: ServerVersion -> IO Bool-is v = testServerBranch >>= \x -> return $ x == Just (serverBranch v)+atmost :: Vers.Version -> IO Bool+atmost v = getServerVersion >>= \x -> return $ x <= Just v +is :: Vers.Version -> IO Bool+is v = getServerVersion >>= \x -> return $ x == Just v+ when' :: Monad m => m Bool -> m () -> m () when' b f = b >>= \x -> when x f -(==~) :: (ApproxEq a, Show a) => a -> a -> Property-a ==~ b = counterexample (show a ++ " !=~ " ++ show b) (a =~ b)+(==~) :: (ApproxEq a) => a -> a -> Property+a ==~ b = counterexample (showApproxEq a ++ " !=~ " ++ showApproxEq b) (a =~ b)  propJSON :: forall a. (Arbitrary a, ToJSON a, FromJSON a, Show a, ApproxEq a, Typeable a) => Proxy a -> Spec propJSON _ = prop testName $ \(a :: a) ->@@ -141,30 +181,44 @@  instance ToJSON ParentMapping where   toJSON ParentMapping =-    object ["parent" .= Null ]+    object ["properties" .=+      object [ "user"     .= object ["type"    .= ("string" :: Text)]+            -- Serializing the date as a date is breaking other tests, mysteriously.+            -- , "postDate" .= object [ "type"   .= ("date" :: Text)+            --                        , "format" .= ("YYYY-MM-dd`T`HH:mm:ss.SSSZZ" :: Text)]+            , "message"  .= object ["type" .= ("string" :: Text)]+            , "age"      .= object ["type" .= ("integer" :: Text)]+            , "location" .= object ["type" .= ("geo_point" :: Text)]+            ]]  data ChildMapping = ChildMapping deriving (Eq, Show)  instance ToJSON ChildMapping where   toJSON ChildMapping =-    object ["child" .=-      object ["_parent" .= object ["type" .= ("parent" :: Text)]]-    ]+    object ["_parent" .= object ["type" .= ("parent" :: Text)]+           , "properties" .=+                object [ "user"     .= object ["type"    .= ("string" :: Text)]+                  -- Serializing the date as a date is breaking other tests, mysteriously.+                  -- , "postDate" .= object [ "type"   .= ("date" :: Text)+                  --                        , "format" .= ("YYYY-MM-dd`T`HH:mm:ss.SSSZZ" :: Text)]+                  , "message"  .= object ["type" .= ("string" :: Text)]+                  , "age"      .= object ["type" .= ("integer" :: Text)]+                  , "location" .= object ["type" .= ("geo_point" :: Text)]+                  ]]  data TweetMapping = TweetMapping deriving (Eq, Show)  instance ToJSON TweetMapping where   toJSON TweetMapping =-    object ["tweet" .=-      object ["properties" .=-        object [ "user"     .= object ["type"    .= ("string" :: Text)]-               -- Serializing the date as a date is breaking other tests, mysteriously.-               -- , "postDate" .= object [ "type"   .= ("date" :: Text)-               --                        , "format" .= ("YYYY-MM-dd`T`HH:mm:ss.SSSZZ" :: Text)]-               , "message"  .= object ["type" .= ("string" :: Text)]-               , "age"      .= object ["type" .= ("integer" :: Text)]-               , "location" .= object ["type" .= ("geo_point" :: Text)]-               ]]]+    object ["properties" .=+      object [ "user"     .= object ["type"    .= ("string" :: Text)]+             -- Serializing the date as a date is breaking other tests, mysteriously.+             -- , "postDate" .= object [ "type"   .= ("date" :: Text)+             --                        , "format" .= ("YYYY-MM-dd`T`HH:mm:ss.SSSZZ" :: Text)]+             , "message"  .= object ["type" .= ("string" :: Text)]+             , "age"      .= object ["type" .= ("integer" :: Text)]+             , "location" .= object ["type" .= ("geo_point" :: Text)]+             ]]  exampleTweet :: Tweet exampleTweet = Tweet { user     = "bitemyapp"@@ -312,6 +366,57 @@   liftIO $     value `shouldBe` expected +withSnapshotRepo+    :: ( MonadMask m+       , MonadBH m+       )+    => SnapshotRepoName+    -> (GenericSnapshotRepo -> m a)+    -> m a+withSnapshotRepo srn@(SnapshotRepoName n) f = do+  repoPaths <- liftIO getRepoPaths+  -- we'll use the first repo path if available, otherwise system temp+  -- dir. Note that this will fail on ES > 1.6, so be sure you use+  -- @when' canSnapshot@.+  case repoPaths of+    (firstRepoPath:_) -> withTempDirectory firstRepoPath (T.unpack n) $ \dir -> bracket (alloc dir) free f+    [] -> withSystemTempDirectory (T.unpack n) $ \dir -> bracket (alloc dir) free f+  where+    alloc dir = do+      liftIO (setFileMode dir mode)+      let repo = FsSnapshotRepo srn "bloodhound-tests-backups" True Nothing Nothing Nothing+      resp <- updateSnapshotRepo defaultSnapshotRepoUpdateSettings repo+      liftIO (validateStatus resp 200)+      return (toGSnapshotRepo repo)+    mode = ownerModes `unionFileModes` groupModes `unionFileModes` otherModes+    free GenericSnapshotRepo {..} = do+      resp <- deleteSnapshotRepo gSnapshotRepoName+      liftIO (validateStatus resp 200)+++withSnapshot+    :: ( MonadMask m+       , MonadBH m+       )+    => SnapshotRepoName+    -> SnapshotName+    -> m a+    -> m a+withSnapshot srn sn = bracket_ alloc free+  where+    alloc = do+      resp <- createSnapshot srn sn createSettings+      liftIO (validateStatus resp 200)+    -- We'll make this synchronous for testing purposes+    createSettings = defaultSnapshotCreateSettings { snapWaitForCompletion = True+                                                   , snapIndices = Just (IndexList (testIndex :| []))+                                                   -- We don't actually need to back up any data+                                                   }+    free = do+      deleteSnapshot srn sn+++ data BulkTest = BulkTest { name :: Text } deriving (Eq, Generic, Show) instance FromJSON BulkTest where   parseJSON = genericParseJSON defaultOptions@@ -350,14 +455,18 @@   default (=~) :: (Generic a, GApproxEq (Rep a)) => a -> a -> Bool   a =~ b = gApproxEq (G.from a) (G.from b) +  showApproxEq :: a -> String+  default showApproxEq :: (Show a) => a -> String+  showApproxEq = show+ instance ApproxEq NominalDiffTime where (=~) = (==) instance ApproxEq UTCTime where (=~) = (==) instance ApproxEq Text where (=~) = (==) instance ApproxEq Bool where (=~) = (==) instance ApproxEq Int where (=~) = (==) instance ApproxEq Double where (=~) = (==)-instance ApproxEq a => ApproxEq (NonEmpty a)-instance ApproxEq a => ApproxEq (Maybe a)+instance (ApproxEq a, Show a) => ApproxEq (NonEmpty a)+instance (ApproxEq a, Show a) => ApproxEq (Maybe a) instance ApproxEq GeoPoint instance ApproxEq Regexp instance ApproxEq RangeValue@@ -374,6 +483,7 @@ instance ApproxEq RegexpFlags instance ApproxEq NullValue instance ApproxEq Version+instance ApproxEq VersionNumber instance ApproxEq DistanceRange instance ApproxEq IndexName instance ApproxEq MappingName@@ -470,15 +580,21 @@ instance ApproxEq MultiMatchQuery instance ApproxEq IndexSettings instance ApproxEq AllocationPolicy-instance ApproxEq Char-instance ApproxEq a => ApproxEq [a] where+instance ApproxEq Char where+  (=~) = (==)+instance ApproxEq Vers.Version where+  (=~) = (==)+instance (ApproxEq a, Show a) => ApproxEq [a] where   as =~ bs = and (zipWith (=~) as bs)-instance (ApproxEq l, ApproxEq r) => ApproxEq (Either l r) where+instance (ApproxEq l, Show l, ApproxEq r, Show r) => ApproxEq (Either l r) where   Left a =~ Left b = a =~ b   Right a =~ Right b = a =~ b   _ =~ _ = False+  showApproxEq (Left x)  = "Left " <> showApproxEq x+  showApproxEq (Right x) = "Right " <> showApproxEq x instance ApproxEq NodeAttrFilter instance ApproxEq NodeAttrName+instance ApproxEq BuildHash  -- | Due to the way nodeattrfilters get serialized here, they may come -- out in a different order, but they are morally equivalent@@ -490,6 +606,10 @@   RoutingAllocationRequire a =~ RoutingAllocationRequire b =     NE.sort a =~ NE.sort b   a =~ b = a == b+  showApproxEq (RoutingAllocationInclude xs) = show (RoutingAllocationInclude (NE.sort xs))+  showApproxEq (RoutingAllocationExclude xs) = show (RoutingAllocationExclude (NE.sort xs))+  showApproxEq (RoutingAllocationRequire xs) = show (RoutingAllocationRequire (NE.sort xs))+  showApproxEq x = show x   noDuplicates :: Eq a => [a] -> Bool@@ -498,8 +618,10 @@ instance Arbitrary NominalDiffTime where   arbitrary = fromInteger <$> arbitrary +#if !MIN_VERSION_QuickCheck(2,8,0) instance (Arbitrary k, Ord k, Arbitrary v) => Arbitrary (M.Map k v) where   arbitrary = M.fromList <$> arbitrary+#endif  instance Arbitrary Text where   arbitrary = T.pack <$> arbitrary@@ -513,8 +635,10 @@     arbitrary = ModifiedJulianDay <$> (2000 +) <$> arbitrary     shrink    = (ModifiedJulianDay <$>) . shrink . toModifiedJulianDay +#if !MIN_VERSION_QuickCheck(2,9,0) instance Arbitrary a => Arbitrary (NonEmpty a) where   arbitrary = liftA2 (:|) arbitrary arbitrary+#endif  arbitraryScore :: Gen Score arbitraryScore = fmap getPositive <$> arbitrary@@ -546,8 +670,8 @@ grabFirst :: Either EsError (SearchResult a) -> Either EsError a grabFirst r =   case fmap (hitSource . head . hits . searchHits) r of-    (Left e) -> Left e-    (Right Nothing) -> Left (EsError 500 "Source was missing")+    (Left e)         -> Left e+    (Right Nothing)  -> Left (EsError 500 "Source was missing")     (Right (Just x)) -> Right x  -------------------------------------------------------------------------------@@ -658,7 +782,7 @@                                     return (ReplicasLowerBounded a)  instance Arbitrary NodeAttrName where-  arbitrary = NodeAttrName . T.pack . getNonEmpty <$> arbitrary+  arbitrary = NodeAttrName . T.pack <$> listOf1 arbitraryAlphaNum   instance Arbitrary NodeAttrFilter where@@ -667,114 +791,137 @@     s:ss <- listOf1 (listOf1 arbitraryAlphaNum)     let ts = T.pack <$> s :| ss     return (NodeAttrFilter n ts)+  shrink = genericShrink -$(derive makeArbitrary ''IndexName)-$(derive makeArbitrary ''MappingName)-$(derive makeArbitrary ''DocId)-$(derive makeArbitrary ''Version)-$(derive makeArbitrary ''IndexAliasRouting)-$(derive makeArbitrary ''ShardCount)-$(derive makeArbitrary ''ReplicaCount)-$(derive makeArbitrary ''TemplateName)-$(derive makeArbitrary ''TemplatePattern)-$(derive makeArbitrary ''QueryString)-$(derive makeArbitrary ''CacheName)-$(derive makeArbitrary ''CacheKey)-$(derive makeArbitrary ''Existence)-$(derive makeArbitrary ''CutoffFrequency)-$(derive makeArbitrary ''Analyzer)-$(derive makeArbitrary ''MaxExpansions)-$(derive makeArbitrary ''Lenient)-$(derive makeArbitrary ''Tiebreaker)-$(derive makeArbitrary ''Boost)-$(derive makeArbitrary ''BoostTerms)-$(derive makeArbitrary ''MinimumMatch)-$(derive makeArbitrary ''DisableCoord)-$(derive makeArbitrary ''IgnoreTermFrequency)-$(derive makeArbitrary ''MinimumTermFrequency)-$(derive makeArbitrary ''MaxQueryTerms)-$(derive makeArbitrary ''Fuzziness)-$(derive makeArbitrary ''PrefixLength)-$(derive makeArbitrary ''TypeName)-$(derive makeArbitrary ''PercentMatch)-$(derive makeArbitrary ''StopWord)-$(derive makeArbitrary ''QueryPath)-$(derive makeArbitrary ''AllowLeadingWildcard)-$(derive makeArbitrary ''LowercaseExpanded)-$(derive makeArbitrary ''EnablePositionIncrements)-$(derive makeArbitrary ''AnalyzeWildcard)-$(derive makeArbitrary ''GeneratePhraseQueries)-$(derive makeArbitrary ''Locale)-$(derive makeArbitrary ''MaxWordLength)-$(derive makeArbitrary ''MinWordLength)-$(derive makeArbitrary ''PhraseSlop)-$(derive makeArbitrary ''MinDocFrequency)-$(derive makeArbitrary ''MaxDocFrequency)-$(derive makeArbitrary ''Regexp)-$(derive makeArbitrary ''SimpleQueryStringQuery)-$(derive makeArbitrary ''FieldOrFields)-$(derive makeArbitrary ''SimpleQueryFlag)-$(derive makeArbitrary ''RegexpQuery)-$(derive makeArbitrary ''QueryStringQuery)-$(derive makeArbitrary ''RangeQuery)-$(derive makeArbitrary ''RangeValue)-$(derive makeArbitrary ''PrefixQuery)-$(derive makeArbitrary ''NestedQuery)-$(derive makeArbitrary ''MoreLikeThisFieldQuery)-$(derive makeArbitrary ''MoreLikeThisQuery)-$(derive makeArbitrary ''IndicesQuery)-$(derive makeArbitrary ''HasParentQuery)-$(derive makeArbitrary ''HasChildQuery)-$(derive makeArbitrary ''FuzzyQuery)-$(derive makeArbitrary ''FuzzyLikeFieldQuery)-$(derive makeArbitrary ''FuzzyLikeThisQuery)-$(derive makeArbitrary ''FilteredQuery)-$(derive makeArbitrary ''DisMaxQuery)-$(derive makeArbitrary ''CommonTermsQuery)-$(derive makeArbitrary ''DistanceRange)-$(derive makeArbitrary ''MultiMatchQuery)-$(derive makeArbitrary ''LessThanD)-$(derive makeArbitrary ''LessThanEqD)-$(derive makeArbitrary ''GreaterThanD)-$(derive makeArbitrary ''GreaterThanEqD)-$(derive makeArbitrary ''LessThan)-$(derive makeArbitrary ''LessThanEq)-$(derive makeArbitrary ''GreaterThan)-$(derive makeArbitrary ''GreaterThanEq)-$(derive makeArbitrary ''GeoPoint)-$(derive makeArbitrary ''NullValue)-$(derive makeArbitrary ''MinimumMatchHighLow)-$(derive makeArbitrary ''CommonMinimumMatch)-$(derive makeArbitrary ''BoostingQuery)-$(derive makeArbitrary ''BoolQuery)-$(derive makeArbitrary ''MatchQuery)-$(derive makeArbitrary ''MultiMatchQueryType)-$(derive makeArbitrary ''BooleanOperator)-$(derive makeArbitrary ''ZeroTermsQuery)-$(derive makeArbitrary ''MatchQueryType)-$(derive makeArbitrary ''SearchAliasRouting)-$(derive makeArbitrary ''ScoreType)-$(derive makeArbitrary ''Distance)-$(derive makeArbitrary ''DistanceUnit)-$(derive makeArbitrary ''DistanceType)-$(derive makeArbitrary ''OptimizeBbox)-$(derive makeArbitrary ''GeoBoundingBoxConstraint)-$(derive makeArbitrary ''GeoFilterType)-$(derive makeArbitrary ''GeoBoundingBox)-$(derive makeArbitrary ''LatLon)-$(derive makeArbitrary ''RangeExecution)-$(derive makeArbitrary ''RegexpFlag)-$(derive makeArbitrary ''BoolMatch)-$(derive makeArbitrary ''Term)-$(derive makeArbitrary ''IndexSettings)-$(derive makeArbitrary ''UpdatableIndexSetting)-$(derive makeArbitrary ''Bytes)-$(derive makeArbitrary ''AllocationPolicy)-$(derive makeArbitrary ''InitialShardCount)-$(derive makeArbitrary ''FSType)-$(derive makeArbitrary ''CompoundFormat)+instance Arbitrary VersionNumber where+  arbitrary = mk . fmap getPositive . getNonEmpty <$> arbitrary+    where+      mk versions = VersionNumber (Vers.Version versions []) +instance Arbitrary IndexName where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MappingName where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary DocId where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Version where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary BuildHash where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary IndexAliasRouting where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary ShardCount where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary ReplicaCount where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary TemplateName where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary TemplatePattern where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary QueryString where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary CacheName where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary CacheKey where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Existence where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary CutoffFrequency where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Analyzer where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MaxExpansions where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Lenient where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Tiebreaker where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Boost where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary BoostTerms where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MinimumMatch where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary DisableCoord where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary IgnoreTermFrequency where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MinimumTermFrequency where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MaxQueryTerms where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Fuzziness where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary PrefixLength where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary TypeName where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary PercentMatch where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary StopWord where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary QueryPath where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary AllowLeadingWildcard where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary LowercaseExpanded where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary EnablePositionIncrements where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary AnalyzeWildcard where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary GeneratePhraseQueries where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Locale where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MaxWordLength where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MinWordLength where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary PhraseSlop where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MinDocFrequency where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MaxDocFrequency where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Regexp where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary SimpleQueryStringQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary FieldOrFields where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary SimpleQueryFlag where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary RegexpQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary QueryStringQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary RangeQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary RangeValue where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary PrefixQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary NestedQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MoreLikeThisFieldQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MoreLikeThisQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary IndicesQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary HasParentQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary HasChildQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary FuzzyQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary FuzzyLikeFieldQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary FuzzyLikeThisQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary FilteredQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary DisMaxQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary CommonTermsQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary DistanceRange where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MultiMatchQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary LessThanD where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary LessThanEqD where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary GreaterThanD where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary GreaterThanEqD where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary LessThan where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary LessThanEq where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary GreaterThan where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary GreaterThanEq where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary GeoPoint where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary NullValue where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MinimumMatchHighLow where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary CommonMinimumMatch where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary BoostingQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary BoolQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MatchQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MultiMatchQueryType where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary BooleanOperator where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary ZeroTermsQuery where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary MatchQueryType where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary SearchAliasRouting where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary ScoreType where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Distance where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary DistanceUnit where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary DistanceType where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary OptimizeBbox where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary GeoBoundingBoxConstraint where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary GeoFilterType where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary GeoBoundingBox where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary LatLon where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary RangeExecution where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary RegexpFlag where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary BoolMatch where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Term where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary IndexSettings where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary UpdatableIndexSetting where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary Bytes where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary AllocationPolicy where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary InitialShardCount where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary FSType where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary CompoundFormat where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary FsSnapshotRepo where arbitrary = sopArbitrary; shrink = genericShrink+instance Arbitrary SnapshotRepoName where arbitrary = sopArbitrary; shrink = genericShrink +newtype UpdatableIndexSetting' = UpdatableIndexSetting' UpdatableIndexSetting+                               deriving (Show, Eq, ToJSON, FromJSON, ApproxEq, Typeable)++instance Arbitrary UpdatableIndexSetting' where+  arbitrary = do+    settings <- arbitrary+    return $ UpdatableIndexSetting' $ case settings of+      RoutingAllocationInclude xs -> RoutingAllocationInclude (dropDuplicateAttrNames xs)+      RoutingAllocationExclude xs -> RoutingAllocationExclude (dropDuplicateAttrNames xs)+      RoutingAllocationRequire xs -> RoutingAllocationRequire (dropDuplicateAttrNames xs)+      x -> x+    where+      dropDuplicateAttrNames = NE.fromList . L.nubBy sameAttrName . NE.toList+      sameAttrName a b = nodeAttrFilterName a == nodeAttrFilterName b+ main :: IO () main = hspec $ do @@ -788,12 +935,17 @@         validateStatus resp 200         validateStatus deleteResp 200 -  describe "error parsing" $ do-    it "can parse EsErrors" $ withTestEnv $ do+  describe "error parsing"  $ do+    it "can parse EsErrors for < 2.0" $ when' (atmost es16) $ withTestEnv $ do       res <- getDocument (IndexName "bogus") (MappingName "also_bogus") (DocId "bogus_as_well")       let errorResp = eitherDecode (responseBody res)       liftIO (errorResp `shouldBe` Right (EsError 404 "IndexMissingException[[bogus] missing]")) +    it "can parse EsErrors for >= 2.0" $ when' (atleast es20) $ withTestEnv $ do+      res <- getDocument (IndexName "bogus") (MappingName "also_bogus") (DocId "bogus_as_well")+      let errorResp = eitherDecode (responseBody res)+      liftIO (errorResp `shouldBe` Right (EsError 404 "no such index"))+   describe "document API" $ do     it "indexes, updates, gets, and then deletes the generated document" $ withTestEnv $ do       _ <- insertData@@ -827,8 +979,8 @@      it "indexes two documents in a parent/child relationship and checks that the child exists" $ withTestEnv $ do       resetIndex-      _ <- putMapping testIndex (MappingName "parent") ParentMapping       _ <- putMapping testIndex (MappingName "child") ChildMapping+      _ <- putMapping testIndex (MappingName "parent") ParentMapping       _ <- indexDocument testIndex (MappingName "parent") defaultIndexDocumentSettings exampleTweet (DocId "1")       let parent = (Just . DocumentParent . DocId) "1"           ids = IndexDocumentSettings NoVersionControl parent@@ -1147,6 +1299,17 @@       searchExpectAggs search       searchValidBucketAgg search "users" toTerms +    it "returns cardinality aggregation results" $ withTestEnv $ do+      _ <- insertData+      let cardinality = CardinalityAgg $ mkCardinalityAggregation $ FieldName "user"+      let search = mkAggregateSearch Nothing $ mkAggregations "users" cardinality+      let search' = search { Database.Bloodhound.from = From 0, size = Size 0 }+      searchExpectAggs search'+      let docCountPair k n = (k, object ["value" .= Number n])+      res <- searchTweets search'+      liftIO $+        fmap aggregations res `shouldBe` Right (Just (M.fromList [ docCountPair "users" 1]))+     it "can give collection hint parameters to term aggregations" $ when' (atleast es13) $ withTestEnv $ do       _ <- insertData       let terms = TermsAgg $ (mkTermsAggregation "user") { termCollectMode = Just BreadthFirst }@@ -1365,6 +1528,132 @@                    (dv <= maxBound) .&&.                    docVersionNumber dv === i +  describe "FsSnapshotRepo" $ do+    prop "SnapshotRepo laws" $ \fsr ->+      fromGSnapshotRepo (toGSnapshotRepo fsr) === Right (fsr :: FsSnapshotRepo)++  describe "snapshot repos" $ do+    it "always parses all snapshot repos API" $ when' canSnapshot $ withTestEnv $ do+      res <- getSnapshotRepos AllSnapshotRepos+      liftIO $ case res of+        Left e -> expectationFailure ("Expected a right but got Left " <> show e)+        Right _ -> return ()++    it "finds an existing list of repos" $ when' canSnapshot $ withTestEnv $ do+      let r1n = SnapshotRepoName "bloodhound-repo1"+      let r2n = SnapshotRepoName "bloodhound-repo2"+      withSnapshotRepo r1n $ \r1 ->+        withSnapshotRepo r2n $ \r2 -> do+          repos <- getSnapshotRepos (SnapshotRepoList (ExactRepo r1n :| [ExactRepo r2n]))+          liftIO $ case repos of+            Right xs -> do+              let srt = L.sortBy (comparing gSnapshotRepoName)+              srt xs `shouldBe` srt [r1, r2]+            Left e -> expectationFailure (show e)++    it "creates and updates with updateSnapshotRepo" $ when' canSnapshot $ withTestEnv $ do+      let r1n = SnapshotRepoName "bloodhound-repo1"+      withSnapshotRepo r1n $ \r1 -> do+        let Just (String dir) = HM.lookup "location" (gSnapshotRepoSettingsObject (gSnapshotRepoSettings r1))+        let noCompression = FsSnapshotRepo r1n (T.unpack dir) False Nothing Nothing Nothing+        resp <- updateSnapshotRepo defaultSnapshotRepoUpdateSettings noCompression+        liftIO (validateStatus resp 200)+        Right [roundtrippedNoCompression] <- getSnapshotRepos (SnapshotRepoList (ExactRepo r1n :| []))+        liftIO (roundtrippedNoCompression `shouldBe` toGSnapshotRepo noCompression)++    -- verify came around in 1.4 it seems+    it "can verify existing repos" $ when' canSnapshot $ when' (atleast es14) $ withTestEnv $ do+      let r1n = SnapshotRepoName "bloodhound-repo1"+      withSnapshotRepo r1n $ \_ -> do+        res <- verifySnapshotRepo r1n+        liftIO $ case res of+          Right (SnapshotVerification vs)+            | null vs -> expectationFailure "Expected nonempty set of verifying nodes"+            | otherwise -> return ()+          Left e -> expectationFailure (show e)++  describe "snapshots" $ do+    it "always parses all snapshots API" $ when' canSnapshot $ withTestEnv $ do+      let r1n = SnapshotRepoName "bloodhound-repo1"+      withSnapshotRepo r1n $ \_ -> do+        res <- getSnapshots r1n AllSnapshots+        liftIO $ case res of+          Left e -> expectationFailure ("Expected a right but got Left " <> show e)+          Right _ -> return ()++    it "can parse a snapshot that it created" $ when' canSnapshot $ withTestEnv $ do+      let r1n = SnapshotRepoName "bloodhound-repo1"+      withSnapshotRepo r1n $ \_ -> do+        let s1n = SnapshotName "example-snapshot"+        withSnapshot r1n s1n $ do+          res <- getSnapshots r1n (SnapshotList (ExactSnap s1n :| []))+          liftIO $ case res of+            Right [snap]+              | snapInfoState snap == SnapshotSuccess &&+                snapInfoName snap == s1n -> return ()+              | otherwise -> expectationFailure (show snap)+            Right [] -> expectationFailure "There were no snapshots"+            Right snaps -> expectationFailure ("Expected 1 snapshot but got" <> show (length snaps))+            Left e -> expectationFailure (show e)++  describe "snapshot restore" $ do+    it "can restore a snapshot that we create" $ when' canSnapshot $ withTestEnv $ do+      let r1n = SnapshotRepoName "bloodhound-repo1"+      withSnapshotRepo r1n $ \_ -> do+        let s1n = SnapshotName "example-snapshot"+        withSnapshot r1n s1n $ do+          let settings = defaultSnapshotRestoreSettings { snapRestoreWaitForCompletion = True }+          -- have to close an index to restore it+          resp1 <- closeIndex testIndex+          liftIO (validateStatus resp1 200)+          resp2 <- restoreSnapshot r1n s1n settings+          liftIO (validateStatus resp2 200)++    it "can restore and rename" $ when' canSnapshot $ withTestEnv $ do+      let r1n = SnapshotRepoName "bloodhound-repo1"+      withSnapshotRepo r1n $ \_ -> do+        let s1n = SnapshotName "example-snapshot"+        withSnapshot r1n s1n $ do+          let pat = RestoreRenamePattern "bloodhound-tests-twitter-(\\d+)"+          let replace = RRTLit "restored-" :| [RRSubWholeMatch]+          let expectedIndex = IndexName "restored-bloodhound-tests-twitter-1"+          oldEnoughForOverrides <- liftIO (atleast es15)+          let overrides = RestoreIndexSettings { restoreOverrideReplicas = Just (ReplicaCount 0) }+          let settings = defaultSnapshotRestoreSettings { snapRestoreWaitForCompletion = True+                                                        , snapRestoreRenamePattern = Just pat+                                                        , snapRestoreRenameReplacement = Just replace+                                                        , snapRestoreIndexSettingsOverrides = if oldEnoughForOverrides+                                                                                              then Just overrides+                                                                                              else Nothing+                                                        }+          -- have to close an index to restore it+          let go = do+                resp <- restoreSnapshot r1n s1n settings+                liftIO (validateStatus resp 200)+                exists <- indexExists expectedIndex+                liftIO (exists `shouldBe` True)+          go `finally` deleteIndex expectedIndex++  describe "getNodesInfo" $ do+     it "fetches the responding node when LocalNode is used" $ withTestEnv $ do+       res <- getNodesInfo LocalNode+       liftIO $ case res of+         -- This is really just a smoke test for response+         -- parsing. Node info is so variable, there's not much I can+         -- assert here.+         Right NodesInfo {..} -> length nodesInfo `shouldBe` 1+         Left e -> expectationFailure ("Expected NodesInfo but got " <> show e)++  describe "getNodesStats" $ do+     it "fetches the responding node when LocalNode is used" $ withTestEnv $ do+       res <- getNodesStats LocalNode+       liftIO $ case res of+         -- This is really just a smoke test for response+         -- parsing. Node stats is so variable, there's not much I can+         -- assert here.+         Right NodesStats {..} -> length nodesStats `shouldBe` 1+         Left e -> expectationFailure ("Expected NodesStats but got " <> show e)+   describe "Enum DocVersion" $ do     it "follows the laws of Enum, Bounded" $ do       evaluate (succ maxBound :: DocVersion) `shouldThrow` anyErrorCall@@ -1549,10 +1838,24 @@     propJSON (Proxy :: Proxy Term)     propJSON (Proxy :: Proxy MultiMatchQuery)     propJSON (Proxy :: Proxy IndexSettings)-    propJSON (Proxy :: Proxy UpdatableIndexSetting)+    propJSON (Proxy :: Proxy UpdatableIndexSetting')     propJSON (Proxy :: Proxy ReplicaBounds)     propJSON (Proxy :: Proxy Bytes)     propJSON (Proxy :: Proxy AllocationPolicy)     propJSON (Proxy :: Proxy InitialShardCount)     propJSON (Proxy :: Proxy FSType)     propJSON (Proxy :: Proxy CompoundFormat)++-- Temporary solution for lacking of generic derivation of Arbitrary+-- We use generics-sop, as it's much more concise than directly using GHC.Generics+--+-- This will be unneeded after https://github.com/nick8325/quickcheck/pull/112+-- is merged and released+sopArbitrary :: forall a. (Generic a, SOP.GTo a, SOP.All SOP.SListI (SOP.GCode a), SOP.All2 Arbitrary (SOP.GCode a)) => Gen a+sopArbitrary = fmap SOP.gto sopArbitrary'++sopArbitrary' :: forall xss. (SOP.All SOP.SListI xss, SOP.All2 Arbitrary xss) => Gen (SOP.SOP SOP.I xss)+sopArbitrary' = SOP.hsequence =<< elements (SOP.apInjs_POP $ SOP.hcpure p arbitrary)+  where+    p :: Proxy Arbitrary+    p = Proxy