elastic / elasticsearch-net

This strongly-typed, client library enables working with Elasticsearch. It is the official client maintained and supported by Elastic.
https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/index.html
Apache License 2.0
16 stars 1.15k forks source link

FiltersAggregationDescriptor doesn't support descriptors to specify filters #7812

Open JuganD opened 1 year ago

JuganD commented 1 year ago

Elastic.Clients.Elasticsearch version: 8.1.1

Elasticsearch version: 8.8.0

.NET runtime version: .NET 7

Operating system version: Windows 11

Description of the problem including expected versus actual behavior: There is no overload of FiltersAggregationDescriptor<>.Filters() that supports descriptors. I see this as a bug, because the entire codebase is successfully using descriptors from the point of connecting to the server to the point of getting a response, the entire flow is working with QueryDescriptor<>, but this class doesn't provide any way to utilize descriptors as filters.

My parameters are all coming in as descriptors and there is no way to provide them to the Filters method, as it only accepts Buckets<Query>.

Previously, using NEST, there was a Filter, instead of Filters method, which was utilized like this: filterAggregation.Filter(f => firstQuery & secondQuery). Since there is no way of combining queries like this, as far as I'm aware, it should be able to work with multiple descriptors, ultimately achieving the same goal.

Steps to reproduce:

  1. Create new SearchRequestDescriptor<T>()
  2. Use the Aggregations method, which exposes an AggregationDescriptor<>
  3. Use Filters method, which exposes FiltersAggregationDescriptor<>
  4. There is no way to pass descriptors to FiltersAggregationDescriptor<>.Filters() method

Expected behavior The class FiltersAggregationDescriptor should have an overload for the Filters method, which either accepts params Action<QueryDescriptor<TDocument>>[] configure or any kind of collection of descriptors, Buckets will also work as long as it accepts QueryDescriptor.

juvemar commented 1 year ago

Are there some intentions of fixing this soon? Really needing it :/

flobernd commented 2 months ago

Related to: Add fluent descriptor support for union types.