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

Logical operations between QueryDescriptor objects are not allowed #8002

Open
Tracked by #8356
bonny-bonev opened this issue Dec 13, 2023 · 9 comments
Open
Tracked by #8356
Labels
8.x Relates to 8.x client version Category: Feature Usability

Comments

@bonny-bonev
Copy link

bonny-bonev commented Dec 13, 2023

Elastic.Clients.Elasticsearch version:8.11

Elasticsearch version:8.11

.NET runtime version:4.8

Operating system version:Win 11

Description of the problem including expected versus actual behavior:
In previous versions (7.x) the QueryContainer objects could be used for logical operations like && and || example:
QueryContainer container = container1 || container2;

In 8.x this is not working. The QueryContainer seems to be replaced with QueryDescriptor, which is fine, but the logical operations implementation is missing. Is this a bug, or something that will be added in the future, or is it replaced with some other approach?

Steps to reproduce:

  1. Try to construct a QueryDescriptor from two other queries with logical operations

Expected behavior
The operation to be allowed, or documentation to be available on how to migrate such code.

Provide ConnectionSettings (if relevant):

Provide DebugInformation (if relevant):

@bonny-bonev bonny-bonev added the 8.x Relates to 8.x client version label Dec 13, 2023
@bonny-bonev
Copy link
Author

Found a workaround to use Query object and not the facades. However it will be nice to port the functionality to the new 8.x API.

@flobernd
Copy link
Member

Hi @bonny-bonev, some of the convenience features are not yet ported over from 7.x to 8.x. My primary focus is on endpoint support at the moment (there is still a lot of functionality missing in 8.x). Afterwards I definitely plan to bring back some of these usability imrovements.

@niemyjski
Copy link
Contributor

And operators overloads*

@niemyjski
Copy link
Contributor

Is there any eta when this might be completed?

@flobernd
Copy link
Member

flobernd commented Dec 2, 2024

@niemyjski This won't be implemented before the release of major version 9 (which will probably be roughly around Q1/Q2 next year).

I started implementing this, but noticed myself that working with descriptors is quite hard in some cases due to the fact that their state can't easily be inspected.

For 9.x I'm planning to introduce a whole object/descriptor design (without causing breaking changes) that will allow me to trivially implement the operator overloads. The new design will probably change descriptors to be wrappers around the "raw" objects (public property 🙂 ).

@niemyjski
Copy link
Contributor

That sounds great.

@niemyjski
Copy link
Contributor

niemyjski commented Feb 28, 2025

I feel like this one might is the highest priority for us as all of our apps use logical operators. Please let me know if you want to pair on this or want any early feedback.

@niemyjski
Copy link
Contributor

reference: #7594

@flobernd
Copy link
Member

flobernd commented Mar 1, 2025

Hi @niemyjski, thanks for offering your help with this! I'll definitely let you know when there is a testable artifact. I expect this to be ready in the next 3 weeks 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
8.x Relates to 8.x client version Category: Feature Usability
Projects
None yet
Development

No branches or pull requests

3 participants