Search code examples
c#elasticsearchnest

C# elastic search exact text match with nest


I am using latest c# elastic search NEST library. I am trying to search with exact text match, but currently it is working searching for subset match. I want to do exact match. Following is my code snippet:


public User GetUserByUsername(string username)
    {
        var client = new ElasticConnectionManager(this.configuration).GetClient(Constant.IndexUsers);

        var searchResponse = client.Search<User>(s => s                
            .Query(q => q
            .Bool(bq => bq                
            .Filter(f => f.Term(t => t.Username, username))
            .Must(mt=>mt.Term(t2=> t2.Username, username)))));

        //.Must(bs => bs.Term(t => t.Username, username))
        if (searchResponse.Documents.Count > 0)
            return searchResponse.Documents.First();
        else
            return null;
    }
}

Solution

  • Try using the match_phrase query for exact text match. Your query should be similar to the following:

        var searchResponse = client.Search<User>(s => s
                .Query(q => q
                .MatchPhrase(m => m
                .Field(f => f.Username)
                .Query(username))));