Saltar al contenido

Buscar en múltiples campos con Elasticsearch

Estate atento porque en este post vas a hallar el arreglo que buscas.

Solución:

La consulta sql es equivalente a:


  "query": 
    "bool": 
      "must": [
        
          "term": 
            "field1": "X"
          
        ,
        
          "term": 
            "field3": "Z"
          
        
      ],
      "must_not": 
        "term": 
          "field2": "Y"
        
      
    
  

En cualquier caso te recomiendo que leas un poco el doc antes de empezar con elasticsearch si eres nuevo.

Hay muchos tipos de consultas y algunas de ellas dependen de cómo indexe sus datos, por ejemplo, para cadenas, puede analizar cadenas (minúsculas, palabras derivadas, eliminar palabras vacías, …) en el momento del índice. La consulta que publiqué nunca coincidirá con un documento cuyo campo 1 sea “X” si analiza ese campo en el momento del índice y lo convierte a minúsculas.

Una vez que conozca un poco mejor Elasticsearch, puede usar filtros para mejorar sus consultas.

Debe elegir la consulta correcta para el trabajo, lo que puede ser difícil al principio. Definitivamente puedes usar un bool consulta para combinar todo tipo de consultas diferentes juntas, como ya se sugirió. También hay consultas que permiten ejecutarse en múltiples campos y se asignan internamente a consultas booleanas. Además, las consultas de términos no son tan comunes en un sistema de producción ya que no admiten ningún análisis de texto, mientras que normalmente desea analizar la consulta de una manera similar a la forma en que indexó el campo que está consultando.

Una de las consultas más comunes en elasticsearch es la consulta de coincidencia, que funciona en un solo campo. Y hay otra consulta con las mismas opciones que también funciona en varios campos, llamada multi_match. Estas consultas admiten el análisis de texto y funcionan muy bien. Sugeriría usarlos sobre la consulta query_string, por ejemplo, que es mucho más potente pero también propenso a errores debido al proceso de análisis necesario. Diría que use query_string solo si necesita específicamente una de sus características (por ejemplo, especificar los nombres de campo u operadores booleanos dentro de la consulta misma), de lo contrario, busque consultas de coincidencia.

También es importante entender la diferencia entre consultas y filtros, echa un vistazo aquí para saber más.

Y eche un vistazo a todas las consultas disponibles con la consulta DSL y juegue con ellas, solo para tener una idea de las diferentes cosas que puede hacer.

Comentarios y calificaciones de la guía

Si crees que te ha resultado útil nuestro post, nos gustaría que lo compartas con más programadores y nos ayudes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *