git.iko.soy/typeable/bloodhound
on master help sign in
Merge pull request #203 from andrewthad/total_fields_limit
8192af8Chris Allen
src/Database/V5/Bloodhound/Types.hs+4
@@ -582,6 +582,7 @@ data UpdatableIndexSetting = NumberOfReplicas ReplicaCount
582 | IndexCompoundFormat CompoundFormat
582 | IndexCompoundFormat CompoundFormat
583 | IndexCompoundOnFlush Bool
583 | IndexCompoundOnFlush Bool
584 | WarmerEnabled Bool
584 | WarmerEnabled Bool
585+ | MappingTotalFieldsLimit Int
585 deriving (Eq, Show, Generic, Typeable)
586 deriving (Eq, Show, Generic, Typeable)
586
587
587data AllocationPolicy = AllocAll
588data AllocationPolicy = AllocAll
@@ -2988,6 +2989,7 @@ instance ToJSON UpdatableIndexSetting where
2988 toJSON (BlocksRead x) = oPath ("blocks" :| ["read"]) x
2989 toJSON (BlocksRead x) = oPath ("blocks" :| ["read"]) x
2989 toJSON (BlocksWrite x) = oPath ("blocks" :| ["write"]) x
2990 toJSON (BlocksWrite x) = oPath ("blocks" :| ["write"]) x
2990 toJSON (BlocksMetaData x) = oPath ("blocks" :| ["metadata"]) x
2991 toJSON (BlocksMetaData x) = oPath ("blocks" :| ["metadata"]) x
2992+ toJSON (MappingTotalFieldsLimit x) = oPath ("index" :| ["mapping","total_fields","limit"]) x
2991
2993
2992instance FromJSON UpdatableIndexSetting where
2994instance FromJSON UpdatableIndexSetting where
2993 parseJSON = withObject "UpdatableIndexSetting" parse
2995 parseJSON = withObject "UpdatableIndexSetting" parse
@@ -3019,6 +3021,7 @@ instance FromJSON UpdatableIndexSetting where
3019 <|> blocksRead `taggedAt` ["blocks", "read"]
3021 <|> blocksRead `taggedAt` ["blocks", "read"]
3020 <|> blocksWrite `taggedAt` ["blocks", "write"]
3022 <|> blocksWrite `taggedAt` ["blocks", "write"]
3021 <|> blocksMetaData `taggedAt` ["blocks", "metadata"]
3023 <|> blocksMetaData `taggedAt` ["blocks", "metadata"]
3024+ <|> mappingTotalFieldsLimit `taggedAt` ["index", "mapping", "total_fields", "limit"]
3022 where taggedAt f ks = taggedAt' f (Object o) ks
3025 where taggedAt f ks = taggedAt' f (Object o) ks
3023 taggedAt' f v [] = f =<< (parseJSON v <|> (parseJSON (unStringlyTypeJSON v)))
3026 taggedAt' f v [] = f =<< (parseJSON v <|> (parseJSON (unStringlyTypeJSON v)))
3024 taggedAt' f v (k:ks) = withObject "Object" (\o -> do v' <- o .: k
3027 taggedAt' f v (k:ks) = withObject "Object" (\o -> do v' <- o .: k
@@ -3051,6 +3054,7 @@ instance FromJSON UpdatableIndexSetting where
3051 blocksRead = pure . BlocksRead
3054 blocksRead = pure . BlocksRead
3052 blocksWrite = pure . BlocksWrite
3055 blocksWrite = pure . BlocksWrite
3053 blocksMetaData = pure . BlocksMetaData
3056 blocksMetaData = pure . BlocksMetaData
3057+ mappingTotalFieldsLimit = pure . MappingTotalFieldsLimit
3054
3058
3055instance FromJSON IndexSettingsSummary where
3059instance FromJSON IndexSettingsSummary where
3056 parseJSON = withObject "IndexSettingsSummary" parse
3060 parseJSON = withObject "IndexSettingsSummary" parse
tests/V5/tests.hs+13
@@ -1609,6 +1609,19 @@ main = hspec $ do
1609 (IndexSettings (ShardCount 1) (ReplicaCount 0))
1609 (IndexSettings (ShardCount 1) (ReplicaCount 0))
1610 (NE.toList updates))
1610 (NE.toList updates))
1611
1611
1612+ it "allows total fields to be set" $ when' (atleast es50) $ withTestEnv $ do
1613+ _ <- deleteExampleIndex
1614+ _ <- createExampleIndex
1615+ let updates = MappingTotalFieldsLimit 2500 :| []
1616+ updateResp <- updateIndexSettings updates testIndex
1617+ liftIO $ validateStatus updateResp 200
1618+ getResp <- getIndexSettings testIndex
1619+ liftIO $
1620+ getResp `shouldBe` Right (IndexSettingsSummary
1621+ testIndex
1622+ (IndexSettings (ShardCount 1) (ReplicaCount 0))
1623+ (NE.toList updates))
1624+
1612 describe "Index Optimization" $ do
1625 describe "Index Optimization" $ do
1613 it "returns a successful response upon completion" $ withTestEnv $ do
1626 it "returns a successful response upon completion" $ withTestEnv $ do
1614 _ <- createExampleIndex
1627 _ <- createExampleIndex