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)
Vous devez agréger le sous-champ keyword
, comme ceci:
"aggs": {
"answer": {
"terms": {
"field": "answer.keyword"
}
},
Ça marchera.
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
}
}
},
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"