相关疑难解决方法(0)

怎么做&&和|| 在NEST中构建查询?

根据http://nest.azurewebsites.net/concepts/writing-queries.html,&&和|| 运算符可用于使用NEST库组合两个查询以与Elastic Search进行通信.

我有以下查询设置:

var ssnQuery = Query<NameOnRecordDTO>.Match(
                q => q.OnField(f => f.SocialSecurityNumber).QueryString(nameOnRecord.SocialSecurityNumber).Fuzziness(0)
            );
Run Code Online (Sandbox Code Playgroud)

然后将其与Bool查询结合使用,如下所示:

var result = client.Search<NameOnRecordDTO>(
     body => body.Query(
          query => query.Bool(
              bq => bq.Should(
                  q => q.Match(
                     p => p.OnField(f => f.Name.First)
                         .QueryString(nameOnRecord.Name.First).Fuzziness(fuzziness)
                  ),
                  q => q.Match(p => p.OnField(f => f.Name.Last)
                         .QueryString(nameOnRecord.Name.Last).Fuzziness(fuzziness)
                  )
              ).MinimumNumberShouldMatch(2)
          ) || ssnQuery
     )
);
Run Code Online (Sandbox Code Playgroud)

我认为这个查询意味着如果SocialSecurityNumber匹配,或者两个Name.FirstName.Last字段都匹配,那么记录应该包含在结果中.

当我使用在QueryString调用中使用的nameOnRecord对象的跟随数据执行此查询时:

"socialSecurityNumber":"123456789",
    "name" : {
      "first":"ryan",          
    }
Run Code Online (Sandbox Code Playgroud)

结果是SSN的人123456789,以及任何有名字的人ryan.

如果我|| ssnQuery从上面的查询中删除,我会得到名字为'ryan'的每个人.

随着|| …

elasticsearch nest

3
推荐指数
1
解决办法
3662
查看次数

标签 统计

elasticsearch ×1

nest ×1