Simple Code
Simple Code

Reputation: 2574

Nest Elasticsearch match_phrase query throws parsing exception

I am using Nest elasticSearch as a client library to interact with the elasticSearch indices.

I am trying to send match_phrase query using the following code:

var searchResponse = elasticClient.Search<ProductType>(s => s
            .Index(indices)
            .Type(Types.Type(typeof(ProductType)))
            .From(0)
            .Size(5)
            .Query(q =>
                q.MatchPhrase(m => m
                 .Field(Infer.Field<ProductType>(ff => ff.Title))
                 .Slop(5)
                 .Query("my query")
                )
            )
        );

It's generating the following query :

GET /product/_search 
    {
      "from": 0,
      "size": 5,
      "sort": [
        {
          "_score": {
            "order": "desc"
          }
        }
      ],
      "query": {
        "match": {
          "title": {
            "type": "phrase",
            "query": "my query",
            "slop": 5
          }
        }
      }
    }

When I execute the above query it returns parsing_exception:

[match] query does not support [type]

I was expecting the above code to return query like the following:

GET /product/_search
{
  "from": 0,
  "size": 5,
  "sort": [
    {
      "_score": {
        "order": "desc"
      }
    }
  ],
  "query": {
    "match_phrase": {
      "title": {
        "query": "my query",
        "slop": 5
      }
    }
  }
}

So is there anything wrong with my code and how can I get rid of it?

Upvotes: 0

Views: 380

Answers (1)

Simple Code
Simple Code

Reputation: 2574

After investigation and depending on match query does not support type I have found that the server I am hosting my cluster on upgraded ElasticSearch into V6.5.0 and it turns out I should upgrade my Nest NuGet package and now it's generating the match_phrase query as expected.

Upvotes: 0

Related Questions