This replaces the elastic crate by implementing the opensearch response struct in the file opensearch.rs. Attempted looking into using the opensearch rust crate but it doesn't implement a deserializable struct. Instead, opensearch.rs examples showed accessing the hits as a serde_json::Value. Opted to implementing our own struct instead with anything extraneous removed
Context: https://linear.app/comm/issue/ENG-7046/remove-elastic-package-from-identity-service