es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Búsqueda de término de ElasticSearch para múltiples campos.

Mi consulta de Elasticsearch a continuación me respondió con 0 registros. Sin embargo, si consulto por separado sobre Aprobado o Rechazado, me da el resultado exacto que deseo.


{
"query": {
"bool": {
"must": [
{
"term": {
"responseType": "Aprobado"
}
},
{
"term": {
"responseType": "Rechazado"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [],
"aggs": {}
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La consulta anterior utiliza una consulta bool con dos cláusulas must que buscan documentos con los términos “Approved” y “Declined” en el campo “responseType”. Dado que ambas cláusulas son requeridas, es poco probable que algún documento coincida con ambos al mismo tiempo, lo que resulta en una respuesta de cero registros.

    Para solucionar esto, puede cambiar la consulta bool para usar una cláusula should en lugar de must, lo que permitiría que se devuelvan documentos que coincidan con cualquier término. La consulta actualizada se vería así:

    {
      "query": {
        "bool": {
          "should": [
            {
              "term": {
                "responseType": "Approved"
              }
            },
            {
              "term": {
                "responseType": "Declined"
              }
            }
          ],
          "must_not": [],
          "must": []
        }
      },
      "from": 0,
      "size": 10,
      "sort": [],
      "aggs": {}
    }
    

    Alternativamente, puede usar una consulta de términos en lugar de dos consultas de términos separadas para buscar documentos “Approved” y “Declined” de una sola vez. La consulta actualizada se vería así:

    {
      "query": {
        "terms": {
          "responseType": [ "Approved", "Declined" ]
        }
      },
      "from": 0,
      "size": 10,
      "sort": [],
      "aggs": {}
    }
    

    Cualquiera de estas opciones debería devolver los resultados que espera sin la respuesta de cero registros.

Comments are closed.