Excluding documents from a search

Hello all,

I'm a brand new developer using elastic search, and I'm struggling to accomplish what seems to be a simple task: filtering documents that I don't want from my search result result.
My index consists, among others, a content field and a projectId field. So, I want to simply search for a document which its content posses the keyword "construction" and the projectId must be equal a GUID.
The thing is, it does not matter how hard I try, I get my desired document at the first position, but then I got others documents that may have "construction" in the content field, but the projectId is not the same I want to filter.

The last version of my code looks like:

    var response = await _elastic.SearchAsync<ProjectDocumentESModel>(s => s.RequestConfiguration(c => c.DisableDirectStreaming())
    	.Index("*")
    	.Query(q =>
    		q.Terms(p => p.Field(f => f.Content).Terms(keyword))
    		&&
    		q.Bool(b => b
    			.Filter(f => f.Match(m => m.Field(f => f.ProjectId).Query(projectId.ToString())))
    		)
    	)
    );

What am I missing here? Please help me.

If you want exact match on the project I’d you should make sure you use a field that is mapped as keyword .

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.