解決策:
default_language
を設定します およびlanguage_override
同じリテラル値(この場合は「en」)に変更します。
どうやってここに来たのか...
Mongo 2.6.1でも、同じ問題が発生しました。
私の場合、 language_override
を使用してインデックスを作成しました サポートされていない値を持つドキュメントがすでに存在する言語フィールドを指します(例:'ar'-アラビア語)。
インデックスの作成方法は次のとおりです。
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "language"
});
default_language
にフォールバックすることを望んでいました language_override
の場合 値はサポートされていませんが、明らかにサポートされていません。モンゴの言うことは次のとおりです:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"ok" : 0,
"errmsg" : "language override unsupported: ar",
"code" : 17262
}
OK、結構です。インデックスは作成されませんでしたが、language_overrideなしで作成できるはずですよね?間違っています-言語オーバーライドが指定されていなくても、mongoで同じエラーが発生します 。
インデックスの作成に失敗したため、どこにも表示されない壊れたバージョンのインデックスが残っているため、削除できません( db.users.getIndexes()に表示されません。コード> 名前でドロップしても機能しません。
結局、 language_override
を設定することで、なんとかインデックスを修正することができました。 次のように、リテラル値'en'に変換します:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "en"
});
...モンゴが返信するもの:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"numIndexesAfter" : 4,
"ok" : 1
}
フラ。