2
respostas

A consulta retornou registros que não atendem aos critérios

Olá, fiquei com a seguinte dúvida nesse filtro: É para listar categoria livro e com as tags imutabilidade ou larga escala, porém o segundo registro ("nome": "A história do futebol brasileiro") não possui nenhuma dessas tags.

O que aconteceu?

2 respostas

Olá Adriano, tudo bem?

Bom, pelo que entende Adriano é que dependendo de como seja feita a consulta, e se existir uma cláusula must ou filtere se um documento corresponder ao que está no bool na consulta, ele será retornado mesmo que não corresponda ao que está no should. Então Adriano, você pode ver um pouco mais sobre esse assunto acessando a documentação do Elasticsearch.

Espero ter esclarecido a sua dúvida e bons estudos!

No caso, a consulta é a útima consulta explicada na aula: https://cursos.alura.com.br/course/elasticsearch5/task/27270

GET produtos/v1/_search
{
  "query": {
    "bool": {
      "must": {"match": {"categoria": "livro"}},
      "should": [   
        {"match": {"tags": "imutabilidade"}},
        {"match": {"tags": "larga escala"}}
      ],
      "must_not": [
        {"match": {
          "nome": "scala"
        }}
      ]
    }
  }
}

O exemplo não ficou muito claro, porque o shold nesse caso não está influenciando nos registros retornados. Está influenciando apenas no score. Se remover o shold retorna os mesmos registros com score diferente.