Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable OSB to use clients other than the standard Python client #419

Open
gkamat opened this issue Nov 22, 2023 · 2 comments
Open

Enable OSB to use clients other than the standard Python client #419

gkamat opened this issue Nov 22, 2023 · 2 comments
Labels
enhancement New feature or request

Comments

@gkamat
Copy link
Collaborator

gkamat commented Nov 22, 2023

Description

Currently, OSB is tied to using opensearch-py, the standard Python client for OpenSearch. However, there are several other clients including the Java client, Rust client, Ruby client, etc. Each of these comes in different versions as well. There is interest in understanding how these clients compare vis-a-vis performance. To permit this, OSB needs to be be enhanced to encapsulate its client access mechanism.

@gkamat gkamat added the enhancement New feature or request label Nov 22, 2023
@saimedhi
Copy link
Contributor

Hey @gkamat, I'd love to work on this issue. Could you give more details on what needs to be done and the expected outcome? Thank you.

@gkamat gkamat removed the untriaged label Nov 28, 2023
@dblock
Copy link
Member

dblock commented Dec 18, 2023

Without looking at the code, I would begin by extracting all client operations (e.g. create an index) into some base class (e.g. Client that has a method .create_index) and reimplementing any existing functionality on top of that, keeping in mind that it should be high level enough that the implementation can be done out of process (e.g. a method that can "add a document" which would be a lot of small operations vs. "index an entire data set" which could be done by calling an out of process command line tool). Generally, Adding a new client should require implementing a new instance of this class (e.g. PythonClient) where all the implementation details can be completely hidden. I would defer adding actual support for clients such as Java for after a decent interface emerges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Development

No branches or pull requests

3 participants