Elasticsearch Seleccionar campos específicos

Elasticsearch Seleccionar Campos Especificos



Elasticsearch devolverá por defecto todos los campos de un documento al realizar una consulta de búsqueda. Esto está definido por el parámetro _source, que contiene todos los datos almacenados en el registro durante la indexación.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: informes'

Producción:







Sin embargo, es posible que no desee recuperar todos los campos de un documento determinado. En este tutorial, aprenderá cómo seleccionar campos específicos de un documento.



Opción de campos de Elasticsearch

El parámetro de campos nos permite recuperar campos específicos en una solicitud de búsqueda. Además, el parámetro de campo nos permitirá obtener campos únicos o múltiples. También puede formatear fechas y tipos de datos espaciales utilizando el parámetro de campos.



Por ejemplo, supongamos que queremos recuperar los campos de índice, id, título, año_de_lanzamiento, enumerados en, duración y calificación del índice de Netflix, podemos ejecutar una consulta como se muestra a continuación:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: informes' -H 'Tipo de contenido: aplicación/json' -d'
{
'consulta': {
'juego': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
    }
  },
'campos': [
'índice',
'identificación',
'título',
'año de lanzamiento',
'listado_en',
'duración',
'clasificación'
  ],
'_fuente': falso

}'

En la solicitud anterior, usamos la API de búsqueda para buscar el documento con la identificación especificada en el parámetro de coincidencia.

Luego usamos el parámetro de campos para obtener los campos específicos del documento de destino.



Tenga en cuenta que Elasticsearch incluirá de forma predeterminada el parámetro _source, que consta de todos los campos del documento. Para asegurarnos de que solo obtengamos los campos especificados, desactivamos el parámetro _source:

La solicitud anterior debe devolver una respuesta como se muestra:

{
'tomó': 1,
'timed_out': falso,
'_fragmentos': {
'totales': 1,
'exitoso': 1,
'omitido': 0,
'fallido': 0
  },
'golpes': {
'total': {
'valor': 1,
'relación': 'eq'
    },
'puntuación_máxima': 1,
'golpes': [
      {
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_puntuación': 1,
'campos': {
'listado_en': [
'Documentales'
          ],
'duración': [
'90 minutos'
          ],
'año de lanzamiento': [
            2020
          ],
'puntuación': [
'PG-13'
          ],
'título': [
'Dick Johnson ha muerto'
          ]
        }
      }
    ]
  }
}

También puede usar el parámetro _source para definir qué campos devolver de una consulta de búsqueda. A continuación se muestra un ejemplo:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: informes' -H 'Tipo de contenido: aplicación/json' -d'
{
'_fuente': ['título', 'año_de_lanzamiento', 'calificación', 'duración'],
'consulta': {
'término': {
'_identificación': {
'valor': 'HXYz_IIBLbuC0z3qKeN2'
      }
    }
  }

}'

En este caso, especificamos los campos que deseamos recuperar como una matriz en el parámetro fuente. La solicitud anterior debe devolver la respuesta como se muestra:

{
'tomó': 0,
'timed_out': falso,
'_fragmentos': {
'totales': 1,
'exitoso': 1,
'omitido': 0,
'fallido': 0
  },
'golpes': {
'total': {
'valor': 1,
'relación': 'eq'
    },
'puntuación_máxima': 1,
'golpes': [
      {
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_puntuación': 1,
'_fuente': {
'duración': '90 minutos',
'año_de_lanzamiento': 2020,
'clasificación': 'PG-13',
'título': 'Dick Johnson ha muerto'
        }
      }
    ]
  }

}

Conclusión

En este artículo, aprendió cómo obtener campos específicos de una solicitud de búsqueda utilizando los campos y los parámetros _source.

Para obtener más información sobre Elasticsearch y sus capacidades, consulte nuestros tutoriales sobre el tema. Tiene la garantía de encontrar algo útil.

¡Gracias por leer y te veo en el próximo!