wazzaday
wazzaday

Reputation: 9664

Elastic search returning wrong results

I am running a query against elastic search but the results returned are wrong. The idea is that I can check against a range of fields with individual queries. But when I pass the following query, items which don't have the included lineup are returned.

query: {
  bool: {
    must: [
      {match:{"lineup.name":{query:"The 1975"}}}
    ]
  }
}

The objects are events which looks like.

{
  title: 'Glastonbury'
  country: 'UK',
  lineup: [
    {
      name: 'The 1975',
      genre: 'Indie',
      headliner: false
    }
  ]
},
{
  title: 'Reading'
  country: 'UK',
  lineup: [
    {
      name: 'The Strokes',
      genre: 'Indie',
      headliner: true
    }
  ]
}

In my case both of these events are returned.

The mapping can be seen here: https://jsonblob.com/567e8f10e4b01190df45bb29

Upvotes: 1

Views: 3493

Answers (1)

ChintanShah25
ChintanShah25

Reputation: 12672

You need to use match_phrase query, match query is looking for either The or 1975 and it find The in The strokes and it gives you that result.

Try

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "lineup.name": {
              "query": "The 1975",
              "type": "phrase"
            }
          }
        }
      ]
    }
  }
}

Upvotes: 5

Related Questions