NEST Elasticsearch两个字段名称之间的查询值

时间:2015-07-09 01:27:32

标签: c# elasticsearch nest

我想将以下sql查询转换为elasticsearch NEST查询:

select * from Table1 where 20 between minAge and maxAge

到目前为止,这是我的嵌套查询的样子(" 20"是来自客户的价值):

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?
                )
            );

2 个答案:

答案 0 :(得分:1)

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

通过这种方式你有x - &gt;在minAge和maxAge之间。所以x必须大于minAge并且同时低于maxAge。希望它有所帮助!

答案 1 :(得分:0)

这个sql意味着minAge&lt; 20和maxAge&gt; 20,所以嵌套查询是:

    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)
            )
        )
    ;