Saltar al contenido

ElasticSearch: ¿Cómo buscar un valor en cualquier campo, en todos los tipos, en uno o más índices?

Solución:

O el query_string consulta o el match consulta sería lo que estás buscando.

query_string usará el especial _all campo si no se especifica ninguno en default_field, por lo que funcionaría bien.

curl -XPOST 'localhost:9200/_search?pretty' -d '{
  "query": { "query_string": { "query": "abc" } }
}'

Y con match puedes especificar el _all así como.

curl -XPOST 'localhost:9200/_search?pretty' -d '{
  "query": { "match": { "_all": "abc" } }
}'

Tenga en cuenta que con query_string puede usar comodines, que no puede con match


ACTUALIZAR:

Como el _all el campo fue obsoleto en 6.0, la solución ahora es implementar un campo personalizado

Una alternativa al campo _todos ahora obsoleto es la consulta de coincidencia múltiple

GET /_search
{
  "query": {
    "multi_match" : {
      "query":    "Will Smith",
      "fields": [ "important_field^5", "less_important^2", "title", "*_name" ] 
    }
  }
}

Se admiten los comodines de nota en los nombres de los campos, además de aumentar la importancia de los campos con la sintaxis ^ #

A partir de la versión 7.3: si no se proporcionan campos, la consulta multi_match toma de forma predeterminada la configuración del índice index.query.default_field, que a su vez toma el valor predeterminado *. * extrae todos los campos del mapeo que son elegibles para consultas de términos y filtra los campos de metadatos. Luego, todos los campos extraídos se combinan para crear una consulta.

Otra alternativa es la consulta de cadena de consulta

GET /_search
{
    "query": {
        "query_string" : {
            "query" : "(new york city) OR (big apple)",
            "default_field" : "content"
        }
    }
}

default_field (Opcional, cadena) Campo predeterminado que desea buscar si no se proporciona ningún campo en la cadena de consulta.

Tiene como valor predeterminado la configuración de índice index.query.default_field, que tiene un valor predeterminado de *.

Creo que puedes usar _all para este propósito

Prueba esto

$ curl -XPOST 'localhost:9200/_search?pretty' -d '
{
  "query": { "match": { "_all": "abc" } }
}'

También podrías usar query_string mientras busca contra _all por defecto.

¡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 *