invulnarable27
invulnarable27

Reputation: 601

NEST Elasticsearch query value between 2 field names

I want to convert the following sql query into an elasticsearch NEST query:

select * from Table1 where 20 between minAge and maxAge

So far this is what my nest query looks like ("20" is value from client):

var result5 = client.Search<Person>(b => b
        .Filter(ff => ff
                .Range(n => n
                    .OnField(f => f.minAge)
                    .Greater(20)
                )
            )
        .Filter(ff => ff
                .Range(n => n
                    .OnField(f => f.maxAge)
                    .Lower(???)  // how do I specify max value as fieldname?
                )
            );

Upvotes: 1

Views: 1063

Answers (2)

danvasiloiu
danvasiloiu

Reputation: 751

   .Filter(ff => ff
            .Range(n => n
                .OnField(f => f.minAge)
                .Greater(x)
            ) && ff
            .Range(n => n
                .OnField(f => f.maxAge)
                .Lower(x)
            )
        )

In this way you have x -> between minAge and maxAge. So x must be greater then minAge and lower then maxAge in the same time. Hope it helps!

Upvotes: 1

Carey Tzou
Carey Tzou

Reputation: 77

This sql mean that minAge<20 and maxAge>20, so the nest query is:

    var result5 = client.Search<Person>(b => b
    .Filter(ff => ff
            .Range(n => n
                .OnField(f => f.minAge)
                .Lower(20)
            ) && ff
            .Range(n => n
                .OnField(f => f.maxAge)
                .Greater(20)
            )
        )
    ;

Upvotes: 0

Related Questions