Lösung:
Legen Sie die default_language
fest und language_override
auf den gleichen Literalwert (in Ihrem Fall "en").
Wie ich hierher gekommen bin...
Ich habe das gleiche Problem, auch auf Mongo 2.6.1.
In meinem Fall habe ich den Index mit einem language_override
erstellt Verweis auf ein Sprachfeld, in dem bereits Dokumente mit nicht unterstützten Werten vorhanden waren (z. B. 'ar' - Arabisch).
So habe ich den Index erstellt:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "language"
});
Ich hatte gehofft, es würde auf die default_language
zurückfallen wenn die language_override
Wert wird nicht unterstützt, aber anscheinend nicht. Folgendes sagt Mongo:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"ok" : 0,
"errmsg" : "language override unsupported: ar",
"code" : 17262
}
OK, gut, also wurde der Index nicht erstellt, aber ich sollte in der Lage sein, ihn ohne language_override zu erstellen, richtig? Falsch - Mongo gibt mir den gleichen Fehler, obwohl ich nicht mehr language_override angegeben habe .
Der fehlgeschlagene Versuch, den Index zu erstellen, scheint eine fehlerhafte Version des Index hinterlassen zu haben, die nirgendwo auftaucht, sodass ich sie nicht löschen kann (sie erscheint nicht in db.users.getIndexes()
und das Ablegen nach Namen funktioniert nicht).
Am Ende habe ich es geschafft, den Index zu reparieren, indem ich language_override
gesetzt habe zum Literalwert 'en', wie folgt:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "en"
});
... worauf Mongo antwortet:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"numIndexesAfter" : 4,
"ok" : 1
}
Hurra.