Elasticsearch d'agrégation imbriquée avec accès au champ parent pour la sous-agrégation

krishna

j'ai les mappages suivants

PUT prod_nested
{
  "mappings": {
    "default": {
      "properties": {
        "pkey": {
          "type": "keyword"
        },
        "original_price": {
          "type": "float"
        },
        "tags": {
          "type": "nested",
          "properties": {
            "category": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 30
                }
              }
            },
            "attribute": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 30
                }
              }
            },
            "original_price": {
              "type": "float"
            }
          }
        }
      }
    }
  } 
}

J'essaie de faire quelque chose comme suivre l'agrégation SQL

select tag_attribute,
       tag_category,
       avg(original_price)
FROM products
GROUP BY tag_category, tag_attribute

Je suis capable de faire la partie groupée en utilisant l'agrégation imbriquée sur les balises, mais il n'est pas en mesure d'accéder à l'original_price en sous-agrégation. Une option peut être de dupliquer l'original_price dans le document imbriqué des balises, mais j'ai des millions d'enregistrements à gérer. Mon agrégation actuelle est

GET prod_nested/_search?size=0
{
    "aggs": {
        "tags": {
          "nested": {
            "path": "tags"
          },
          "aggs": {
            "categories": {
              "terms": {
                "field": "tags.category.keyword",
                "size": 30
              },
              "aggs": {
                "attributes": {
                  "terms": {
                    "field": "tags.attribute.keyword",
                    "size": 30
                  },
                  "aggs": {
                    "price": {
                      "avg": {
                        "field": "original_price"
                      }
                    }
                  }
                }

              }
            }
          }
        }
      }
}

Merci d'avance.

krishna

J'ai pu obtenir les résultats souhaités en utilisant l'agrégation reverse_nested.

GET prod_nested/_search?size=0
{
  "aggs": {
    "tags": {
      "nested": {
        "path": "tags"
      },
      "aggs": {
        "categories": {
          "terms": {
            "field": "tags.category.keyword",
            "size": 10
          },
          "aggs": {
            "attributes": {
              "terms": {
                "field": "tags.attribute.keyword",
                "size": 10
              },
              "aggs": {
                "parent_doc_price": {
                  "reverse_nested": {},
                  "aggs": {
                    "avg_price": {
                      "avg": {
                        "field": "original_price"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

elasticsearch sous-agrégation parent distincte sans champ imbriqué

accéder à la variable imbriquée à partir de la sous-agrégation sur elasticsearch

Agrégation imbriquée Elasticsearch avec agrégation de plages

Agrégation imbriquée Elasticsearch avec JAVA

Elasticsearch - Champ imbriqué d'agrégation de termes

Elasticsearch d'agrégation imbriquée

Est-il possible d'effectuer une agrégation de statistiques imbriquées elasticsearch sur un champ défini par l'agrégation parent?

Comment utiliser la fonctionnalité d'agrégation Mongo pour calculer les totaux et les pourcentages de sous-total avec des groupes imbriqués?

sous-agrégation avec elasticsearch

Champs imbriqués d'agrégation ElasticSearch dans le cadre du document parent

Agrégation MongoDB avec des tableaux d'objets imbriqués

Groupes imbriqués avec structure d'agrégation

Comment accéder au champ clé date_histogram dans l'agrégation enfant dans elasticsearch?

Créer un nouveau champ à partir d'un champ imbriqué avec framework d'agrégation, MongoDB

Rapports d'agrégation imbriqués Elasticsearch utilisant des données imbriquées et au niveau racine

agrégation imbriquée de facettes d'elasticsearch

Client ElasticSearch C # (NEST): accédez aux résultats d'agrégation imbriqués

Sous-agrégation avec somme / moyenne avec Elasticsearch

Agrégation Elasticsearch sur un champ imbriqué (pas de tableau)

Agrégation MongoDB créée date à horodatage et correspondance avec le champ d'horodatage par la suite

Fonction d'agrégation imbriquée dans la clause MySql

Sous-agrégation Elasticsearch avec une condition

Elasticsearch: l'agrégation reverse_nested sous une agrégation imbriquée profonde ne fonctionne pas

Agrégation ElasticSearch avec Java

Mongo agrégation pour un champ DbRef avec mongoTemplate

agrégation mongodb avec $ project pour exclure conditionnellement un champ

Agrégation MongoDB avec $ lookup pour afficher uniquement le résultat d'un champ

Agrégation MongoDB avec $lookup pour le champ à l'intérieur d'un tableau

Comment sélectionner uniquement une colonne de ma sous-requête avec la fonction d'agrégation?

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  3. 3

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  4. 4

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Exporter la table de l'arborescence vers CSV avec mise en forme

  7. 7

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  8. 8

    Créer un système Buzzer à l'aide de python

  9. 9

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  10. 10

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  11. 11

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  12. 12

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  13. 13

    Conversion double en BigDecimal en Java

  14. 14

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  15. 15

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  18. 18

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  19. 19

    comment afficher un bouton au-dessus d'un autre élément ?

  20. 20

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  21. 21

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

chaudétiquette

Archive