git.iko.soy/typeable/bloodhound
on master help sign in
Merge pull request #200 from andrewthad/delete_alias
a49fd8eChris Allen
src/Database/V5/Bloodhound/Client.hs+7
@@ -37,6 +37,7 @@ module Database.V5.Bloodhound.Client
37 -- *** Index Aliases
37 -- *** Index Aliases
38 , updateIndexAliases
38 , updateIndexAliases
39 , getIndexAliases
39 , getIndexAliases
40+ , deleteIndexAlias
40 -- *** Index Templates
41 -- *** Index Templates
41 , putTemplate
42 , putTemplate
42 , templateExists
43 , templateExists
@@ -717,6 +718,12 @@ getIndexAliases :: (MonadBH m, MonadThrow m)
717getIndexAliases = parseEsResponse =<< get =<< url
718getIndexAliases = parseEsResponse =<< get =<< url
718 where url = joinPath ["_aliases"]
719 where url = joinPath ["_aliases"]
719
720
721+-- | Delete a single alias, removing it from all indices it
722+-- is currently associated with.
723+deleteIndexAlias :: MonadBH m => IndexAliasName -> m Reply
724+deleteIndexAlias (IndexAliasName (IndexName name)) = delete =<< url
725+ where url = joinPath ["_all","_alias",name]
726+
720-- | 'putTemplate' creates a template given an 'IndexTemplate' and a 'TemplateName'.
727-- | 'putTemplate' creates a template given an 'IndexTemplate' and a 'TemplateName'.
721-- Explained in further detail at
728-- Explained in further detail at
722-- <https://www.elastic.co/guide/en/elasticsearch/reference/1.7/indices-templates.html>
729-- <https://www.elastic.co/guide/en/elasticsearch/reference/1.7/indices-templates.html>
tests/V5/tests.hs+16−4
@@ -1554,11 +1554,11 @@ main = hspec $ do
1554 scan_search `shouldMatchList` [Just exampleTweet, Just otherTweet]
1554 scan_search `shouldMatchList` [Just exampleTweet, Just otherTweet]
1555
1555
1556 describe "index aliases" $ do
1556 describe "index aliases" $ do
1557+ let aname = IndexAliasName (IndexName "bloodhound-tests-twitter-1-alias")
1558+ let alias = IndexAlias (testIndex) aname
1559+ let create = IndexAliasCreate Nothing Nothing
1560+ let action = AddAlias alias create
1557 it "handles the simple case of aliasing an existing index" $ do
1561 it "handles the simple case of aliasing an existing index" $ do
1558− let alias = IndexAlias (testIndex) (IndexAliasName (IndexName "bloodhound-tests-twitter-1-alias"))
1559− let create = IndexAliasCreate Nothing Nothing
1560− let action = AddAlias alias create
1561−
1562 withTestEnv $ do
1562 withTestEnv $ do
1563 resetIndex
1563 resetIndex
1564 resp <- updateIndexAliases (action :| [])
1564 resp <- updateIndexAliases (action :| [])
@@ -1570,6 +1570,18 @@ main = hspec $ do
1570 Right (IndexAliasesSummary summs) ->
1570 Right (IndexAliasesSummary summs) ->
1571 L.find ((== alias) . indexAliasSummaryAlias) summs `shouldBe` Just expected
1571 L.find ((== alias) . indexAliasSummaryAlias) summs `shouldBe` Just expected
1572 Left e -> expectationFailure ("Expected an IndexAliasesSummary but got " <> show e)) `finally` cleanup
1572 Left e -> expectationFailure ("Expected an IndexAliasesSummary but got " <> show e)) `finally` cleanup
1573+ it "allows alias deletion" $ do
1574+ aliases <- withTestEnv $ do
1575+ resetIndex
1576+ resp <- updateIndexAliases (action :| [])
1577+ liftIO $ validateStatus resp 200
1578+ deleteIndexAlias aname
1579+ getIndexAliases
1580+ let expected = IndexAliasSummary alias create
1581+ case aliases of
1582+ Right (IndexAliasesSummary summs) ->
1583+ L.find ((== aname) . indexAlias . indexAliasSummaryAlias) summs `shouldBe` Nothing
1584+ Left e -> expectationFailure ("Expected an IndexAliasesSummary but got " <> show e)
1573
1585
1574 describe "Index Listing" $ do
1586 describe "Index Listing" $ do
1575 it "returns a list of index names" $ withTestEnv $ do
1587 it "returns a list of index names" $ withTestEnv $ do