web-dev-qa-db-fra.com

Les données de champ ElasticSearch 5.1 sont désactivées dans le champ de texte par défaut [ERREUR: tentative d'utilisation de l'agrégation sur le champ]

Avoir ce champ dans ma cartographie

"answer": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },

j'essaie d'exécuter cette agrégation 

"aggs": {
"answer": {
  "terms": {
    "field": "answer"
  }
},

mais j'obtiens cette erreur

"type": "illegal_argument_exception",
      "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [answer] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."

Dois-je changer ma cartographie ou est-ce que j'utilise la mauvaise agrégation? (juste mis à jour de 2.x à 5.1)

6
Nacho Nieva

Vous devez agréger le sous-champ keyword, comme ceci:

"aggs": {
"answer": {
  "terms": {
    "field": "answer.keyword"
  }
},

Ça marchera.

18
Val

En ajoutant à la réponse de @Val, vous pouvez également définir la valeur fielddata sur true lors de votre mappage lui-même:

"answer": {
        "type": "text",
        "fielddata": true, <-- add this line
        "fields": {
          "keyword": {
            "type": "keyword",                
            "ignore_above": 256
          }
        }
      },
1
Kulasangar

Dans l’agrégation, il suffit d’ajouter un mot clé pour répondre. Cela a fonctionné pour moi. Pour les champs de texte, nous devons ajouter un mot clé. "Field": "answer.keyword"

1
yogitha