Rose
Rose

Reputation: 1498

Elasticsearch query to match two different fields with exact values

I want to find the record in my elasticsearch index where it should match field "connectorSpecific.hostname.keyword" with value "tyco-fire.com" and field "hasForms" with value true.

Below is my elasticsearch query:

GET index1/_search
{ 
  "query": {
    "bool": {
      "should": [
        { "match": { "connectorSpecific.hostname.keyword":  "tyco-fire.com" }},
        { "match": { "hasForms": true   }}
      ]
    }
  }
}

This query is returning records which also has field "hasForms" with value false. Not sure why.I am using a boolean should query.Any help is appreciated

Upvotes: 2

Views: 737

Answers (1)

Val
Val

Reputation: 217554

If you want both constraints to match, then you should use bool/filter (or bool/must would work as well but since you're doing exact matching, you don't need scoring at all), like this:

GET index1/_search
{ 
  "query": {
    "bool": {
      "filter": [
        { "match": { "connectorSpecific.hostname.keyword":  "tyco-fire.com" }},
        { "match": { "hasForms": true   }}
      ]
    }
  }
}

Upvotes: 3

Related Questions