The behavior is as if queryTweet was executing after insertData deleted the index, but before it inserted the new data.
The following is a stripped down example:
insertData :: IO ()
insertData = do
let encoded = encode exampleTweet
_ <- deleteExampleIndex
created <- createExampleIndex
docCreated <- indexDocument (Server "
http://localhost:9200") "twitter" "tweet" exampleTweet "1"
print "test"
return ()
el
queryTweet :: IO (Either String Tweet)
queryTweet = do
let queryFilter = BoolFilter (MustMatch (Term "user" "bitemyapp") False)
<||> IdentityFilter
let search = Search Nothing (Just queryFilter)
reply <- searchByIndex testServer "twitter" search
let result = eitherDecode (responseBody reply) :: Either String (SearchResult Tweet)
let myTweet = fmap (hitSource . head . hits . searchHits) result
return myTweet
main :: IO ()
main = do
_ <- insertData
myTweet <- queryTweet
print myTweet
further up the call chain, the http call is getting dispatched with http-conduit's gear, the result returned with the expression:
Included this in case it affects the semantics.
Can anybody help? This has stumped me for a couple hours and I couldn't get anything clueful on IRC.
Thanks to any that help.