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.

buscar múltiples campos como consulta de expresión regular en Elasticsearch

Estoy intentando buscar por diferentes campos como el título y la descripción. Cuando escribo palabras clave, Elasticsearch debe encontrar algo si la descripción o el título incluyen esas palabras clave. Este es mi objetivo. ¿Cómo puedo alcanzar mi objetivo?

Puedes ver el código de muestra que utilicé para un campo.

query: {
  regexp: {
    title: `.*${q}.*`,
  },
},

También intenté lo siguiente, pero dio un error de sintaxis.

query: {
  regexp: {
    title: `.*${q}.*`,
  },
  regexp: {
    description: `.*${q}.*`,
  },
},
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para buscar por diferentes campos como el título y la descripción utilizando elasticsearch, puedes utilizar la consulta Multi-match. Esta consulta te permite buscar palabras clave en varios campos al mismo tiempo.

    Aquí tienes un ejemplo de uso de la consulta Multi-match en JavaScript:

    const { Client } = require('@elastic/elasticsearch');
    const client = new Client({ node: 'http://localhost:9200' });
    
    async function search(q) {
      const response = await client.search({
        index: 'my_index',
        body: {
          query: {
            multi_match: {
              query: q,
              fields: ['title', 'description']
            }
          }
        }
      });
    
      console.log(response.hits.hits);
    }
    
    search('mi consulta');
    

    En este código, la consulta multi_match busca el texto de la consulta q en los campos title y description del índice my_index. La respuesta contendrá todos los documentos coincidentes.

    Ten en cuenta que el parámetro fields toma un array de campos para buscar. Puedes añadir más campos según sea necesario.

Comments are closed.