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 any extraneous removed
Context: https://linear.app/comm/issue/ENG-7046/remove-elastic-package-from-identity-service