Skip to content

Búsqueda con ReportM

Como se mencionó anteriormente, ReportM admite 3 tipos de búsqueda para obtener datos, que se utilizan posteriormente para rellenar hojas de Excel.

  • Búsqueda por Definición. Es una búsqueda de texto libre sobre una definición.
  • Búsqueda por Dominio. Es una búsqueda de texto libre sobre las definiciones de un dominio, aplicando la búsqueda a las distintas definiciones del dominio. Las instancias encontradas en cada definición se concatenan en un único listado.
  • Búsqueda Elasticsearch. Es una búsqueda Elasticsearch estructurada (que puede contener agregaciones) sobre el índice de una definición.

Búsqueda por Definición

La Búsqueda por Definición ejecuta una query sobre una definición, utilizando las instancias devueltas como datos del informe. Esta query se escribe utilizando búsqueda libre. Cada instancia se convertirá en una fila del informe, donde los campos seleccionados serán las columnas.

En una búsqueda por definición, los siguientes parámetros en COB_SHEETS significan:

ParámetroSignificado
TargetNombre de la definición en la que buscar
searchLa consulta de búsqueda libre que desea utilizar

Ejemplo

Para crear un informe con la lista de todos los países que utilizan el Euro como moneda, podríamos usar un cob_config_v2 como:

image_1

Y una hoja Countries con el siguiente aspecto:

image_1

Y el resultado final sería:

image

Búsqueda por Dominio

La Búsqueda por Dominio funciona de la misma forma que la Búsqueda por Definición, pero el Target es el nombre de un dominio.

En una búsqueda por dominio, los siguientes parámetros en COB_SHEETS significan:

ParámetroSignificado
TargetNombre del dominio al que pertenecen las definiciones que se van a buscar
searchLa query a ejecutar sobre todas las definiciones del dominio

Por ejemplo, el dominio @ELRD E-learning Demo tiene las siguientes definiciones:

  • Countries
  • Countries Series
  • Country Events
  • Country Trip Ideas

Si nuestro cob_config_v2 tiene el siguiente aspecto:

screenshot_2026-04-17_at_11.40.54

Y Countries tiene las siguientes columnas:

image

TIP

La columna definitionName queda disponible para cada instancia, indicando la definición a la que pertenece.

Produciría:

image

Tenga en cuenta que las definiciones que no tienen el campo dejan esa columna vacía.

WARNING

Si una definición no tiene un campo especificado en el encabezado de una Target Sheet, esa columna estará vacía para todas las instancias de esa definición.

Búsqueda Elasticsearch

La Búsqueda Elasticsearch ejecuta una query Elasticsearch sobre el índice de una definición.

En una búsqueda Elasticsearch, los siguientes parámetros en COB_SHEETS significan:

ParámetroSignificado
TargetÍndice de la definición. Los índices tienen el siguiente nombre: recordm-<id de la definición>
searchLa query Elasticsearch que desea utilizar. Puede incluir agregaciones.

Datos del Informe en Informes Elasticsearch

Los campos que especificamos en el informe — en la Target Sheet — afectan al tipo de datos devueltos por la búsqueda Elasticsearch. Considere, por ejemplo, la siguiente query, ejecutada sobre la definición Countries, que incluye una agregación:

json
{
  "query": {
    "match_all": {}
  },
  "aggs" : { 
    "per_currency" : { // Nombre del bucket, elegido por nosotros
      "terms": {
        "field": "currency_unit.raw",
        "size": 100
      },
      "aggs": {
        "count": { // Nombre del sub-bucket, elegido por nosotros
          "cardinality": {
            "field": "id.raw"
          }
        }
      }
    }
  }
}

Esta consulta cuenta el número de países que tienen cada tipo de moneda.

  • Si usamos per_currency o count como nombres de campos en nuestro informe, ReportM utilizará los datos de agregación para rellenar esas columnas.
  • Si usamos algunos de los nombres de campos de la definición, como long_name, ReportM utilizará las instancias.

Esto significa que, al consultar Elasticsearch directamente, podemos realizar una búsqueda sobre instancias y aprovechar toda la potencia de consulta de Elasticsearch. Sin embargo, debemos tener cuidado de no mezclar diferentes tipos de datos (agregados vs. no agregados), ya que esto probablemente generará informes no deseados.

NOTE

En las consultas Elasticsearch, los campos deben referenciarse en su formato de búsqueda (sin espacios, todo en minúsculas).

En las agregaciones, debemos utilizar siempre el .raw de un campo, ya que es en ese campo donde almacenamos el valor de un campo como keyword, lo que permite a Elasticsearch utilizarlo en agregaciones.

Buckets en los informes

Si usamos nombres de buckets en nuestro informe, cada bucket generará una fila para sus sub-buckets (o una única fila si no tiene sub-buckets). Considere, por ejemplo, la siguiente consulta:

json
{
  "query": {
    "match_all": {}
  },
  "aggs" : {
    "per_currency" : {
      "terms": {
        "field": "currency_unit.raw",
        "size": 100
      },
      "aggs": {
        "per_income": {
          "terms": {
            "field": "income_group.raw"
          },
          "aggs": {
            "count": {
              "cardinality": {
                "field": "id.raw"
              }
            }
          }
        }
      }
    }
  }
}

En este caso, dividimos los países por sus grupos de ingresos para cada unidad monetaria. Esto significa que tendremos una fila para cada combinación de per_currency y per_income presente en nuestros datos.

Ejemplo

Vamos a ejemplificar cómo utilizar búsquedas Elasticsearch con la query anterior, en la que contamos cuántos países de cada grupo de ingresos existen para cada moneda.

Así pues, nuestro cob_config_v2 tendría el siguiente aspecto:

image

TIP

Se recomienda encarecidamente escribir la query Elasticsearch en otro programa y pegarla en Excel.

Para ayudar a escribir estas consultas, Kibana suele ser un buen punto de partida. Nos permite hacer "Inspect" de la query detrás de un gráfico y utilizarla aquí.

Mientras que nuestra hoja Countries tiene el siguiente aspecto:

image

Produciría:

image