Skip to content

Add a "multiple query descriptors" example to basic docs #8399

Open
@seanwm

Description

@seanwm

Is your feature request related to a problem? Please describe.
I need to write queries like this:

{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "propOne": "my_value_1"
          }
        },
        {
          "term":
          {
            "propTwo": "my_value_2"
          }
        }
      ]
    }
  }
}

I couldn't find any examples of that in the current documentation. Flailing around in VS Code I can end up with compilable code like this:

Query(q =>
                q.Bool(b => b
                    .Filter(f => f.Term(t => t.Field(f => f.PropOne).Value("my_value_1")))
                    .Filter(f => f.Term(t => t.Field(f => f.PropTwo).Value("my_value_2))))
                ));

But that doesn't work; only the "PropTwo" filter ends up in the resulting query. One answer I found via another tangentially-related issue here was to do something like this:

var filters = new List<Action<QueryDescriptor<MyType>>>();
filters.Add(f => f.Term(t => t.Field(f => f.PropOne).Value("my_value_1")));
filters.Add(f => f.Term(t => t.Field(f => f.PropTwo).Value("my_value_2")));

...and then include them in my query with .Filter(filters.ToArray()). If there's a way to do what I want simply by chaining, I'm not sure what it might be.

I am no doubt bad at intuiting fluent interfaces, but it felt frustrating to know what output I wanted but be unable to create that in code.

Describe the solution you'd like
For me, it would have helped a lot to have one or two examples on a page like "Query examples" demonstrate how to have more than one query descriptor under something like "Filter()".

Additional context
I appreciate the library!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions