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?
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?
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 filter
e 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.