git.iko.soy/typeable/bloodhound
on master help sign in
killed mField
8708223Chris Allen
Database/Bloodhound/Types.hs+137−149
@@ -1,4 +1,5 @@
1{-# LANGUAGE DeriveGeneric #-}
1{-# LANGUAGE DeriveGeneric #-}
2+{-# LANGUAGE RecordWildCards #-}
2
3
3{-| Data types for describing actions and data structures performed to interact
4{-| Data types for describing actions and data structures performed to interact
4 with Elasticsearch. The two main buckets your queries against Elasticsearch
5 with Elasticsearch. The two main buckets your queries against Elasticsearch
@@ -150,7 +151,6 @@ import Data.Aeson
150import qualified Data.ByteString.Lazy.Char8 as L
151import qualified Data.ByteString.Lazy.Char8 as L
151import Data.List (nub)
152import Data.List (nub)
152import Data.List.NonEmpty (NonEmpty(..))
153import Data.List.NonEmpty (NonEmpty(..))
153−import Data.Maybe (catMaybes)
154import Data.Monoid
154import Data.Monoid
155import Data.Text (Text)
155import Data.Text (Text)
156import qualified Data.Text as T
156import qualified Data.Text as T
@@ -158,7 +158,6 @@ import Data.Time.Clock (UTCTime)
158import GHC.Generics (Generic)
158import GHC.Generics (Generic)
159import Network.HTTP.Client
159import Network.HTTP.Client
160import qualified Network.HTTP.Types.Method as NHTM
160import qualified Network.HTTP.Types.Method as NHTM
161−import Prelude hiding (filter)
162
161
163import Database.Bloodhound.Types.Class
162import Database.Bloodhound.Types.Class
164
163
@@ -968,9 +967,9 @@ instance ToJSON Filter where
968 object ["or" .= fmap toJSON filters
967 object ["or" .= fmap toJSON filters
969 , "_cache" .= cache]
968 , "_cache" .= cache]
970
969
971− toJSON (NotFilter filter cache) =
970+ toJSON (NotFilter notFilter cache) =
972 object ["not" .=
971 object ["not" .=
973− object ["filter" .= toJSON filter
972+ object ["filter" .= toJSON notFilter
974 , "_cache" .= cache]]
973 , "_cache" .= cache]]
975
974
976 toJSON (IdentityFilter) =
975 toJSON (IdentityFilter) =
@@ -1104,8 +1103,8 @@ instance ToJSON Query where
1104 toJSON (QueryCommonTermsQuery commonTermsQuery) =
1103 toJSON (QueryCommonTermsQuery commonTermsQuery) =
1105 object [ "common" .= toJSON commonTermsQuery ]
1104 object [ "common" .= toJSON commonTermsQuery ]
1106
1105
1107− toJSON (ConstantScoreFilter filter boost) =
1106+ toJSON (ConstantScoreFilter csFilter boost) =
1108− object [ "constant_score" .= toJSON filter
1107+ object [ "constant_score" .= toJSON csFilter
1109 , "boost" .= toJSON boost]
1108 , "boost" .= toJSON boost]
1110
1109
1111 toJSON (ConstantScoreQuery query boost) =
1110 toJSON (ConstantScoreQuery query boost) =
@@ -1137,8 +1136,7 @@ instance ToJSON Query where
1137 object [ "indices" .= toJSON qIndicesQuery ]
1136 object [ "indices" .= toJSON qIndicesQuery ]
1138
1137
1139 toJSON (MatchAllQuery boost) =
1138 toJSON (MatchAllQuery boost) =
1140− object [ "match_all" .= object maybeAdd ]
1139+ object [ "match_all" .= omitNulls [ "boost" .= boost ] ]
1141− where maybeAdd = catMaybes [ mField "boost" boost ]
1142
1140
1143 toJSON (QueryMoreLikeThisQuery query) =
1141 toJSON (QueryMoreLikeThisQuery query) =
1144 object [ "more_like_this" .= toJSON query ]
1142 object [ "more_like_this" .= toJSON query ]
@@ -1162,23 +1160,23 @@ instance ToJSON Query where
1162 object [ "simple_query_string" .= toJSON query ]
1160 object [ "simple_query_string" .= toJSON query ]
1163
1161
1164
1162
1165−mField :: (ToJSON a, Functor f) => T.Text -> f a -> f (T.Text, Value)
1163+omitNulls :: [(Text, Value)] -> Value
1166−mField field = fmap ((field .=) . toJSON)
1164+omitNulls = object . filter notNull where
1165+ notNull (_, Null) = False
1166+ notNull _ = True
1167+
1167
1168
1168instance ToJSON SimpleQueryStringQuery where
1169instance ToJSON SimpleQueryStringQuery where
1169− toJSON (SimpleQueryStringQuery sqsQueryString
1170+ toJSON SimpleQueryStringQuery {..} =
1170− sqsFields sqsBoolean sqsAnalyzer
1171+ omitNulls (base ++ maybeAdd)
1171− sqsFlags sqsLowercaseExpanded sqsLocale) =
1172− object conjoined
1173− where base = [ "query" .= toJSON sqsQueryString ]
1172+ where base = [ "query" .= toJSON simpleQueryStringQuery ]
1174− maybeAdd =
1173+ maybeAdd = [ "fields" .= simpleQueryStringField
1175− catMaybes [ mField "fields" sqsFields
1176− , mField "default_operator" sqsBoolean
1174+ , "default_operator" .= simpleQueryStringOperator
1177− , mField "analyzer" sqsAnalyzer
1175+ , "analyzer" .= simpleQueryStringAnalyzer
1178− , mField "flags" sqsFlags
1176+ , "flags" .= simpleQueryStringFlags
1179− , mField "lowercase_expanded_terms" sqsLowercaseExpanded
1177+ , "lowercase_expanded_terms" .= simpleQueryStringLowercaseExpanded
1180− , mField "locale" sqsLocale ]
1178+ , "locale" .= simpleQueryStringLocale ]
1181− conjoined = base ++ maybeAdd
1179+
1182
1180
1183instance ToJSON FieldOrFields where
1181instance ToJSON FieldOrFields where
1184 toJSON (FofField fieldName) =
1182 toJSON (FofField fieldName) =
@@ -1200,15 +1198,16 @@ instance ToJSON SimpleQueryFlag where
1200 toJSON SimpleQueryNear = "NEAR"
1198 toJSON SimpleQueryNear = "NEAR"
1201 toJSON SimpleQuerySlop = "SLOP"
1199 toJSON SimpleQuerySlop = "SLOP"
1202
1200
1201+
1203instance ToJSON RegexpQuery where
1202instance ToJSON RegexpQuery where
1204 toJSON (RegexpQuery (FieldName rqQueryField)
1203 toJSON (RegexpQuery (FieldName rqQueryField)
1205 (Regexp regexpQueryQuery) rqQueryFlags
1204 (Regexp regexpQueryQuery) rqQueryFlags
1206 rqQueryBoost) =
1205 rqQueryBoost) =
1207− object [ rqQueryField .= object conjoined ]
1206+ object [ rqQueryField .= omitNulls base ]
1208 where base = [ "value" .= regexpQueryQuery
1207 where base = [ "value" .= regexpQueryQuery
1209− , "flags" .= toJSON rqQueryFlags ]
1208+ , "flags" .= toJSON rqQueryFlags
1210− maybeAdd = catMaybes [ mField "boost" rqQueryBoost ]
1209+ , "boost" .= rqQueryBoost ]
1211− conjoined = base ++ maybeAdd
1210+
1212
1211
1213instance ToJSON QueryStringQuery where
1212instance ToJSON QueryStringQuery where
1214 toJSON (QueryStringQuery qsQueryString
1213 toJSON (QueryStringQuery qsQueryString
@@ -1220,27 +1219,26 @@ instance ToJSON QueryStringQuery where
1220 qsBoost qsAnalyzeWildcard
1219 qsBoost qsAnalyzeWildcard
1221 qsGeneratePhraseQueries qsMinimumShouldMatch
1220 qsGeneratePhraseQueries qsMinimumShouldMatch
1222 qsLenient qsLocale) =
1221 qsLenient qsLocale) =
1223− object conjoined
1222+ omitNulls base
1224 where
1223 where
1225− base = [ "query" .= toJSON qsQueryString ]
1224+ base = [ "query" .= toJSON qsQueryString
1226− maybeAdd =
1227− catMaybes [ mField "default_field" qsDefaultField
1225+ , "default_field" .= qsDefaultField
1228− , mField "default_operator" qsOperator
1226+ , "default_operator" .= qsOperator
1229− , mField "analyzer" qsAnalyzer
1227+ , "analyzer" .= qsAnalyzer
1230− , mField "allow_leading_wildcard" qsAllowWildcard
1228+ , "allow_leading_wildcard" .= qsAllowWildcard
1231− , mField "lowercase_expanded_terms" qsLowercaseExpanded
1229+ , "lowercase_expanded_terms" .= qsLowercaseExpanded
1232− , mField "enable_position_increments" qsEnablePositionIncrements
1230+ , "enable_position_increments" .= qsEnablePositionIncrements
1233− , mField "fuzzy_max_expansions" qsFuzzyMaxExpansions
1231+ , "fuzzy_max_expansions" .= qsFuzzyMaxExpansions
1234− , mField "fuzziness" qsFuzziness
1232+ , "fuzziness" .= qsFuzziness
1235− , mField "fuzzy_prefix_length" qsFuzzyPrefixLength
1233+ , "fuzzy_prefix_length" .= qsFuzzyPrefixLength
1236− , mField "phrase_slop" qsPhraseSlop
1234+ , "phrase_slop" .= qsPhraseSlop
1237− , mField "boost" qsBoost
1235+ , "boost" .= qsBoost
1238− , mField "analyze_wildcard" qsAnalyzeWildcard
1236+ , "analyze_wildcard" .= qsAnalyzeWildcard
1239− , mField "auto_generate_phrase_queries" qsGeneratePhraseQueries
1237+ , "auto_generate_phrase_queries" .= qsGeneratePhraseQueries
1240− , mField "minimum_should_match" qsMinimumShouldMatch
1238+ , "minimum_should_match" .= qsMinimumShouldMatch
1241− , mField "lenient" qsLenient
1239+ , "lenient" .= qsLenient
1242− , mField "locale" qsLocale ]
1240+ , "locale" .= qsLocale ]
1243− conjoined = base ++ maybeAdd
1241+
1244
1242
1245instance ToJSON RangeQuery where
1243instance ToJSON RangeQuery where
1246 toJSON (RangeQuery (FieldName fieldName) (Right range) boost) =
1244 toJSON (RangeQuery (FieldName fieldName) (Right range) boost) =
@@ -1256,12 +1254,12 @@ instance ToJSON RangeQuery where
1256 , key .= val ]
1254 , key .= val ]
1257 (key, val) = halfRangeToKV halfRange
1255 (key, val) = halfRangeToKV halfRange
1258
1256
1257+
1259instance ToJSON PrefixQuery where
1258instance ToJSON PrefixQuery where
1260 toJSON (PrefixQuery (FieldName fieldName) queryValue boost) =
1259 toJSON (PrefixQuery (FieldName fieldName) queryValue boost) =
1261− object [ fieldName .= object conjoined ]
1260+ object [ fieldName .= omitNulls base ]
1262− where base = [ "value" .= toJSON queryValue ]
1261+ where base = [ "value" .= toJSON queryValue
1263− maybeAdd = catMaybes [ mField "boost" boost ]
1262+ , "boost" .= boost ]
1264− conjoined = base ++ maybeAdd
1265
1263
1266
1264
1267instance ToJSON NestedQuery where
1265instance ToJSON NestedQuery where
@@ -1275,135 +1273,128 @@ instance ToJSON MoreLikeThisFieldQuery where
1275 toJSON (MoreLikeThisFieldQuery text (FieldName fieldName)
1273 toJSON (MoreLikeThisFieldQuery text (FieldName fieldName)
1276 percent mtf mqt stopwords mindf maxdf
1274 percent mtf mqt stopwords mindf maxdf
1277 minwl maxwl boostTerms boost analyzer) =
1275 minwl maxwl boostTerms boost analyzer) =
1278− object [ fieldName .= object conjoined ]
1276+ object [ fieldName .= omitNulls base ]
1279− where base = [ "like_text" .= toJSON text ]
1277+ where base = [ "like_text" .= toJSON text
1280− maybeAdd = catMaybes [ mField "percent_terms_to_match" percent
1278+ , "percent_terms_to_match" .= percent
1281− , mField "min_term_freq" mtf
1279+ , "min_term_freq" .= mtf
1282− , mField "max_query_terms" mqt
1280+ , "max_query_terms" .= mqt
1283− , mField "stop_words" stopwords
1281+ , "stop_words" .= stopwords
1284− , mField "min_doc_freq" mindf
1282+ , "min_doc_freq" .= mindf
1285− , mField "max_doc_freq" maxdf
1283+ , "max_doc_freq" .= maxdf
1286− , mField "min_word_length" minwl
1284+ , "min_word_length" .= minwl
1287− , mField "max_word_length" maxwl
1285+ , "max_word_length" .= maxwl
1288− , mField "boost_terms" boostTerms
1286+ , "boost_terms" .= boostTerms
1289− , mField "boost" boost
1287+ , "boost" .= boost
1290− , mField "analyzer" analyzer ]
1288+ , "analyzer" .= analyzer ]
1291− conjoined = base ++ maybeAdd
1292
1289
1293
1290
1294instance ToJSON MoreLikeThisQuery where
1291instance ToJSON MoreLikeThisQuery where
1295 toJSON (MoreLikeThisQuery text fields percent
1292 toJSON (MoreLikeThisQuery text fields percent
1296 mtf mqt stopwords mindf maxdf
1293 mtf mqt stopwords mindf maxdf
1297 minwl maxwl boostTerms boost analyzer) =
1294 minwl maxwl boostTerms boost analyzer) =
1298− object conjoined
1295+ omitNulls base
1299− where base = [ "like_text" .= toJSON text ]
1296+ where base = [ "like_text" .= toJSON text
1300− maybeAdd = catMaybes [ mField "fields" fields
1297+ , "fields" .= fields
1301− , mField "percent_terms_to_match" percent
1298+ , "percent_terms_to_match" .= percent
1302− , mField "min_term_freq" mtf
1299+ , "min_term_freq" .= mtf
1303− , mField "max_query_terms" mqt
1300+ , "max_query_terms" .= mqt
1304− , mField "stop_words" stopwords
1301+ , "stop_words" .= stopwords
1305− , mField "min_doc_freq" mindf
1302+ , "min_doc_freq" .= mindf
1306− , mField "max_doc_freq" maxdf
1303+ , "max_doc_freq" .= maxdf
1307− , mField "min_word_length" minwl
1304+ , "min_word_length" .= minwl
1308− , mField "max_word_length" maxwl
1305+ , "max_word_length" .= maxwl
1309− , mField "boost_terms" boostTerms
1306+ , "boost_terms" .= boostTerms
1310− , mField "boost" boost
1307+ , "boost" .= boost
1311− , mField "analyzer" analyzer ]
1308+ , "analyzer" .= analyzer ]
1312− conjoined = base ++ maybeAdd
1313
1309
1314
1310
1315instance ToJSON IndicesQuery where
1311instance ToJSON IndicesQuery where
1316 toJSON (IndicesQuery indices query noMatch) =
1312 toJSON (IndicesQuery indices query noMatch) =
1317− object $ [ "indices" .= toJSON indices
1313+ omitNulls [ "indices" .= toJSON indices
1318− , "query" .= toJSON query ] ++ maybeAdd
1319− where maybeAdd = catMaybes [ mField "no_match_query" noMatch ]
1314+ , "no_match_query" .= toJSON noMatch
1315+ , "query" .= toJSON query ]
1320
1316
1321
1317
1322instance ToJSON HasParentQuery where
1318instance ToJSON HasParentQuery where
1323 toJSON (HasParentQuery queryType query scoreType) =
1319 toJSON (HasParentQuery queryType query scoreType) =
1324− object $ [ "parent_type" .= toJSON queryType
1320+ omitNulls [ "parent_type" .= toJSON queryType
1325− , "query" .= toJSON query ] ++ maybeAdd
1326− where maybeAdd = catMaybes [ mField "score_type" scoreType ]
1321+ , "score_type" .= toJSON scoreType
1322+ , "query" .= toJSON query ]
1327
1323
1328
1324
1329instance ToJSON HasChildQuery where
1325instance ToJSON HasChildQuery where
1330 toJSON (HasChildQuery queryType query scoreType) =
1326 toJSON (HasChildQuery queryType query scoreType) =
1331− object $ [ "query" .= toJSON query
1327+ omitNulls [ "query" .= toJSON query
1328+ , "score_type" .= toJSON scoreType
1332− , "type" .= toJSON queryType ] ++ maybeAdd
1329+ , "type" .= toJSON queryType ]
1333− where maybeAdd = catMaybes [ mField "score_type" scoreType ]
1334
1330
1335
1331
1336instance ToJSON FuzzyQuery where
1332instance ToJSON FuzzyQuery where
1337 toJSON (FuzzyQuery (FieldName fieldName) queryText
1333 toJSON (FuzzyQuery (FieldName fieldName) queryText
1338 prefixLength maxEx fuzziness boost) =
1334 prefixLength maxEx fuzziness boost) =
1339− object [ fieldName .= object conjoined ]
1335+ object [ fieldName .= omitNulls base ]
1340 where base = [ "value" .= toJSON queryText
1336 where base = [ "value" .= toJSON queryText
1341 , "fuzziness" .= toJSON fuzziness
1337 , "fuzziness" .= toJSON fuzziness
1342 , "prefix_length" .= toJSON prefixLength
1338 , "prefix_length" .= toJSON prefixLength
1339+ , "boost" .= toJSON boost
1343 , "max_expansions" .= toJSON maxEx ]
1340 , "max_expansions" .= toJSON maxEx ]
1344− maybeAdd = catMaybes [ mField "boost" boost ]
1345− conjoined = base ++ maybeAdd
1346
1341
1347
1342
1348instance ToJSON FuzzyLikeFieldQuery where
1343instance ToJSON FuzzyLikeFieldQuery where
1349 toJSON (FuzzyLikeFieldQuery (FieldName fieldName)
1344 toJSON (FuzzyLikeFieldQuery (FieldName fieldName)
1350 fieldText maxTerms ignoreFreq fuzziness prefixLength
1345 fieldText maxTerms ignoreFreq fuzziness prefixLength
1351 boost analyzer) =
1346 boost analyzer) =
1352− object $ [ fieldName .=
1347+ object [ fieldName .=
1353− object [ "like_text" .= toJSON fieldText
1348+ omitNulls [ "like_text" .= toJSON fieldText
1354− , "max_query_terms" .= toJSON maxTerms
1349+ , "max_query_terms" .= toJSON maxTerms
1355− , "ignore_tf" .= toJSON ignoreFreq
1350+ , "ignore_tf" .= toJSON ignoreFreq
1356− , "fuzziness" .= toJSON fuzziness
1351+ , "fuzziness" .= toJSON fuzziness
1357− , "prefix_length" .= toJSON prefixLength
1352+ , "prefix_length" .= toJSON prefixLength
1353+ , "analyzer" .= toJSON analyzer
1358− , "boost" .= toJSON boost ]] ++ maybeAdd
1354+ , "boost" .= toJSON boost ]]
1359− where maybeAdd = catMaybes [ mField "analyzer" analyzer ]
1360
1355
1361
1356
1362instance ToJSON FuzzyLikeThisQuery where
1357instance ToJSON FuzzyLikeThisQuery where
1363 toJSON (FuzzyLikeThisQuery fields text maxTerms
1358 toJSON (FuzzyLikeThisQuery fields text maxTerms
1364 ignoreFreq fuzziness prefixLength boost analyzer) =
1359 ignoreFreq fuzziness prefixLength boost analyzer) =
1365− object conjoined
1360+ omitNulls base
1366 where base = [ "fields" .= toJSON fields
1361 where base = [ "fields" .= toJSON fields
1367 , "like_text" .= toJSON text
1362 , "like_text" .= toJSON text
1368 , "max_query_terms" .= toJSON maxTerms
1363 , "max_query_terms" .= toJSON maxTerms
1369 , "ignore_tf" .= toJSON ignoreFreq
1364 , "ignore_tf" .= toJSON ignoreFreq
1370 , "fuzziness" .= toJSON fuzziness
1365 , "fuzziness" .= toJSON fuzziness
1371 , "prefix_length" .= toJSON prefixLength
1366 , "prefix_length" .= toJSON prefixLength
1367+ , "analyzer" .= toJSON analyzer
1372 , "boost" .= toJSON boost ]
1368 , "boost" .= toJSON boost ]
1373− maybeAdd = catMaybes [ mField "analyzer" analyzer ]
1374− conjoined = base ++ maybeAdd
1375
1369
1376
1370
1377instance ToJSON FilteredQuery where
1371instance ToJSON FilteredQuery where
1378− toJSON (FilteredQuery query filter) =
1372+ toJSON (FilteredQuery query fFilter) =
1379 object [ "query" .= toJSON query
1373 object [ "query" .= toJSON query
1380− , "filter" .= toJSON filter ]
1374+ , "filter" .= toJSON fFilter ]
1381
1375
1382
1376
1383instance ToJSON DisMaxQuery where
1377instance ToJSON DisMaxQuery where
1384 toJSON (DisMaxQuery queries tiebreaker boost) =
1378 toJSON (DisMaxQuery queries tiebreaker boost) =
1385− object conjoined
1379+ omitNulls base
1386− where maybeAdd = catMaybes [mField "boost" boost]
1387− base = [ "queries" .= toJSON queries
1380+ where base = [ "queries" .= toJSON queries
1381+ , "boost" .= toJSON boost
1388 , "tie_breaker" .= toJSON tiebreaker ]
1382 , "tie_breaker" .= toJSON tiebreaker ]
1389− conjoined = base ++ maybeAdd
1390
1383
1391
1384
1392instance ToJSON CommonTermsQuery where
1385instance ToJSON CommonTermsQuery where
1393 toJSON (CommonTermsQuery (FieldName fieldName)
1386 toJSON (CommonTermsQuery (FieldName fieldName)
1394 (QueryString query) cf lfo hfo msm
1387 (QueryString query) cf lfo hfo msm
1395 boost analyzer disableCoord) =
1388 boost analyzer disableCoord) =
1396− object [fieldName .= object conjoined]
1389+ object [fieldName .= omitNulls base ]
1397− where base = [ "query" .= query
1390+ where base = [ "query" .= toJSON query
1398 , "cutoff_frequency" .= toJSON cf
1391 , "cutoff_frequency" .= toJSON cf
1399 , "low_freq_operator" .= toJSON lfo
1392 , "low_freq_operator" .= toJSON lfo
1393+ , "minimum_should_match" .= toJSON msm
1394+ , "boost" .= toJSON boost
1395+ , "analyzer" .= toJSON analyzer
1396+ , "disable_coord" .= toJSON disableCoord
1400 , "high_freq_operator" .= toJSON hfo ]
1397 , "high_freq_operator" .= toJSON hfo ]
1401− extension = catMaybes
1402− [ mField "minimum_should_match" msm
1403− , mField "boost" boost
1404− , mField "analyzer" analyzer
1405− , mField "disable_coord" disableCoord ]
1406− conjoined = base ++ extension
1407
1398
1408
1399
1409instance ToJSON CommonMinimumMatch where
1400instance ToJSON CommonMinimumMatch where
@@ -1421,14 +1412,13 @@ instance ToJSON BoostingQuery where
1421
1412
1422instance ToJSON BoolQuery where
1413instance ToJSON BoolQuery where
1423 toJSON (BoolQuery mustM notM shouldM bqMin boost disableCoord) =
1414 toJSON (BoolQuery mustM notM shouldM bqMin boost disableCoord) =
1424− object filtered
1415+ omitNulls base
1425− where filtered = catMaybes
1426− [ mField "must" mustM
1416+ where base = [ "must" .= toJSON mustM
1427− , mField "must_not" notM
1417+ , "must_not" .= toJSON notM
1428− , mField "should" shouldM
1418+ , "should" .= toJSON shouldM
1429− , mField "minimum_should_match" bqMin
1419+ , "minimum_should_match" .= toJSON bqMin
1430− , mField "boost" boost
1420+ , "boost" .= toJSON boost
1431− , mField "disable_coord" disableCoord ]
1421+ , "disable_coord" .= toJSON disableCoord ]
1432
1422
1433
1423
1434instance ToJSON MatchQuery where
1424instance ToJSON MatchQuery where
@@ -1436,33 +1426,31 @@ instance ToJSON MatchQuery where
1436 (QueryString mqQueryString) booleanOperator
1426 (QueryString mqQueryString) booleanOperator
1437 zeroTermsQuery cutoffFrequency matchQueryType
1427 zeroTermsQuery cutoffFrequency matchQueryType
1438 analyzer maxExpansions lenient) =
1428 analyzer maxExpansions lenient) =
1439− object [ fieldName .= object conjoined ]
1429+ object [ fieldName .= omitNulls base ]
1440− where conjoined = [ "query" .= mqQueryString
1430+ where base = [ "query" .= mqQueryString
1441− , "operator" .= toJSON booleanOperator
1431+ , "operator" .= toJSON booleanOperator
1442− , "zero_terms_query" .= toJSON zeroTermsQuery]
1432+ , "zero_terms_query" .= toJSON zeroTermsQuery
1443− ++ maybeAdd
1444− maybeAdd = catMaybes [ mField "cutoff_frequency" cutoffFrequency
1433+ , "cutoff_frequency" .= toJSON cutoffFrequency
1445− , mField "type" matchQueryType
1434+ , "type" .= toJSON matchQueryType
1446− , mField "analyzer" analyzer
1435+ , "analyzer" .= toJSON analyzer
1447− , mField "max_expansions" maxExpansions
1436+ , "max_expansions" .= toJSON maxExpansions
1448− , mField "lenient" lenient ]
1437+ , "lenient" .= toJSON lenient ]
1449
1438
1450
1439
1451instance ToJSON MultiMatchQuery where
1440instance ToJSON MultiMatchQuery where
1452 toJSON (MultiMatchQuery fields (QueryString query) boolOp
1441 toJSON (MultiMatchQuery fields (QueryString query) boolOp
1453 ztQ tb mmqt cf analyzer maxEx lenient) =
1442 ztQ tb mmqt cf analyzer maxEx lenient) =
1454− object ["multi_match" .= object conjoined]
1443+ object ["multi_match" .= omitNulls base]
1455− where baseQuery = [ "fields" .= fmap toJSON fields
1444+ where base = [ "fields" .= fmap toJSON fields
1456− , "query" .= query
1445+ , "query" .= query
1457− , "operator" .= toJSON boolOp
1446+ , "operator" .= toJSON boolOp
1458− , "zero_terms_query" .= toJSON ztQ ]
1447+ , "zero_terms_query" .= toJSON ztQ
1459− maybeAdd = catMaybes [ mField "tiebreaker" tb
1448+ , "tiebreaker" .= toJSON tb
1460− , mField "type" mmqt
1449+ , "type" .= toJSON mmqt
1461− , mField "cutoff_frequency" cf
1450+ , "cutoff_frequency" .= toJSON cf
1462− , mField "analyzer" analyzer
1451+ , "analyzer" .= toJSON analyzer
1463− , mField "max_expansions" maxEx
1452+ , "max_expansions" .= toJSON maxEx
1464− , mField "lenient" lenient ]
1453+ , "lenient" .= toJSON lenient ]
1465− conjoined = baseQuery ++ maybeAdd
1466
1454
1467
1455
1468instance ToJSON MultiMatchQueryType where
1456instance ToJSON MultiMatchQueryType where
@@ -1555,10 +1543,10 @@ instance (FromJSON a) => FromJSON (EsResult a) where
1555
1543
1556
1544
1557instance ToJSON Search where
1545instance ToJSON Search where
1558− toJSON (Search query filter sort sTrackSortScores sFrom sSize) =
1546+ toJSON (Search query sFilter sort sTrackSortScores sFrom sSize) =
1559 object merged where
1547 object merged where
1560 lQuery = maybeJson "query" query
1548 lQuery = maybeJson "query" query
1561− lFilter = maybeJson "filter" filter
1549+ lFilter = maybeJson "filter" sFilter
1562 lSort = maybeJsonF "sort" sort
1550 lSort = maybeJsonF "sort" sort
1563 merged = mconcat [[ "from" .= sFrom
1551 merged = mconcat [[ "from" .= sFrom
1564 , "size" .= sSize
1552 , "size" .= sSize