NEST Elastic Search上的MatchPhrasePrefix

时间:2014-12-08 20:49:06

标签: elasticsearch nest

我无法弄清楚如何通过MatchPhrasePrefix搜索索引中的文档。我希望匹配整个搜索词短语,但允许最后一个词的前缀。

这个LINQ结构让我得到1.0分的所有东西。我该如何构建它?另外,有没有看到NEST正在构建的原始查询?那会非常有用!

    var search = new SearchDescriptor<ObservationElasticModel>();
        search = search
            .Query(q => q.MatchPhrase(m => m.Query(term)));
     var response = _client.Search<ObservationElasticModel>(search);

1 个答案:

答案 0 :(得分:3)

您可以在 QueryDescriptor 上使用 MatchPhrasePrefix 方法。您可能还需要将Operator设置为AND。

_client.Search<ObservationElasticModel>(s => s
    .Query(q => q
        .MatchPhrasePrefix(m => m
            .Operator(Operator.And)
            .Query(term)));

您可以在安装过程中通过调用ConnectionSettings实例上的 EnableTrace() ExposeRawResponse()将原始查询记录到调试控制台。

var settings = new ConnectionSettings(new Uri(searchUri));
settings.EnableTrace();
settings.ExposeRawResponse();
_client = new ElasticClient(settings);