Volver arriba campos basados en anidada campo sumas en ElasticSearch

0

Pregunta

Soy una total ES principiante y me pregunto si lo que quiero hacer es posible. Tengo el siguiente un viewer índice con la siguiente asignación:

"mappings": {
        "properties": {
            "id": {"type": "text"},
            "name": {"type": "text"},
            "location": {"type": "text"},
            "viewed_videos": { //array of all the videos a viewer saw and their view counts
                "type": "nested",
                "properties": {
                    "id": {"type": "text"},
                    "name": {"type": "text"},
                    "description": {"type": "text"},
                    "times_viewed": {"type": "long"},
                },
            },
        }
    }

Quiero averiguar cuáles son los videos más vistos por ubicación. Así que tengo una forma de resumir el times_viewed para cada viewed_video a través de muchos viewers y, a continuación, llegar a la cima de X para un lugar determinado.

Es eso posible?

elasticsearch
2021-11-19 18:58:29
1

Mejor respuesta

0

Solución: Usted tendrá tres niveles de agregación

  • plazo de agregación en el campo de ubicación
  • anidado plazo de agregación en ver video Id
  • suma la agregación de las veces visto

Sin embargo, el término agregaciones no se puede realizar en los campos de texto. Por favor, compruebe la nota en la documentación - https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html:

De forma predeterminada, puede ejecutar un términos de agregación en un campo de texto. El uso de una palabra clave sub-campo lugar. Alternativamente, usted puede habilitar fielddata en el campo de texto para crear cubos para el campo analizado términos. La habilitación de fielddata puede aumentar significativamente el uso de memoria.

Esto podría ayudar así: elasticsearch agregación de campos con el tipo de texto asignación de

Una vez que el problema se corrige, esta consulta debe trabajar -

GET viewer/_search
{
  "size": 0,
  "aggs": {
    "location": {
      "terms": {
        "field": "location"
      },
      "aggs": {
        "videos": {
          "nested": {
            "path": "viewed_videos"
          },
          "aggs": {
             "type": {
               "terms": {
                    "field": "viewed_videos.id"
                },
                "aggs": {
                  "count": {
                    "sum": {
                      "field": "viewed_videos.times_viewed"
                    }
                  },
                  "sorted_count": {
                    "bucket_sort": {
                      "sort": [
                        { "count": { "order": "desc" } } 
                      ],
                      "size": <X> // top X results                            
                    }
                  }
                } 
              }
            }
          }
       }
    }
  }
}
2021-11-20 08:11:05

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................