You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OpenSearch 2.10 introduced the ability to do hybrid querying, where you can use multiple queries and normalize the resulting scores to implement a hybrid search strategy. Low-level client totally supports this, and the high-level client should be able to support it with something like this:
Not the prettiest code, but it should work! Problem is upon constructing that query, the following error is raised:
File "hybrid_search_test.py", line 52, in get
search = Search().query(Q({
File "lib/python3.8/site-packages/opensearchpy/helpers/query.py", line 49, in Q
return Query.get_dsl_class(name)(_expand__to_dot=False, **params)
File "lib/python3.8/site-packages/opensearchpy/helpers/utils.py", line 283, in get_dsl_class
raise UnknownDslObject(
opensearchpy.exceptions.UnknownDslObject: DSL class `hybrid` does not exist in query.
This prevents hybrid searching via the DSL, and forces dropping down to the low-level client to execute.
What solution would you like?
Within helpers/query.py, adding:
classHybrid(Query):
name="hybrid"
...works with my example above, but I'm not 100% sure it's the right way to broach adding this to the DSL. I think something like a Search.hybrid_query function might make sense, but haven't dug down that rabbit hole yet.
The text was updated successfully, but these errors were encountered:
@youcandanch, @lambda-science, @ssharm8-etr Your contributions are highly valued and greatly appreciated. Whenever you have a moment, we welcome your input and encourage you to submit a pull request. Thank you!
Is your feature request related to a problem?
OpenSearch 2.10 introduced the ability to do hybrid querying, where you can use multiple queries and normalize the resulting scores to implement a hybrid search strategy. Low-level client totally supports this, and the high-level client should be able to support it with something like this:
Not the prettiest code, but it should work! Problem is upon constructing that query, the following error is raised:
This prevents hybrid searching via the DSL, and forces dropping down to the low-level client to execute.
What solution would you like?
Within helpers/query.py, adding:
...works with my example above, but I'm not 100% sure it's the right way to broach adding this to the DSL. I think something like a
Search.hybrid_query
function might make sense, but haven't dug down that rabbit hole yet.The text was updated successfully, but these errors were encountered: