When using the ElasticSearch backend, setup() appears to be running on every request, as the setup_complete variable isn't persisted between requests. This means that Haystack ends up running 4 HTTP requests instead of 1, and slows down querying.
This seems to have something to do with the backend being initialized on every call to the backend, not specifically because of ES.
Make sure an search engine's backend isn't instantiated on every call…
… to the backend but only once. Fixes #580.
Amazing, thank you! Sorry I didn't get time to dig into this enough.