我的队友已经改变了映射的定义,因为我们在排序时没有memmory错误,没有排序的搜索工作正常。他在某处读到这可能是doc_values设置的问题。不幸的是,没有阅读任何其他关于映射的文档。我们有1个索引和2种类型的映射。两个映射中的耦合字段具有相同的名称。我们的数据结构和更改可以通过架构来解释:
改变之前:
type A: {
properties: {
aaa: { type: string, store: true }
bbb: { type: long, store: true }
ccc: { type: long, store: true }
}
},
type B: {
properties: {
aaa: { type: string, store: true }
bbb: { type: long, store: true }
xxx: { type: long, store: true }
}
}
更改后:
type A: {
properties: {
aaa: { type: string, store: true,
fields: {
raw: { type: string, index: not_analyzed, doc_values: true }
}
}
bbb: { type: long, store: true, doc_values: true }
ccc: { type: long, store: true, doc_values: true }
}
},
type B: {
properties: {
aaa: { type: string, store: true }
bbb: { type: long, store: true }
xxx: { type: long, store: true }
}
}
所以他添加了doc_values并将两种类型中存在的一个字段更改为多字段,但他只更改了一种类型的映射。
文档说明:
毕竟我不确定我们结束了什么。我知道typeA变得不可用,所有查询都没有给我们带来任何结果。但是typeB仍然可以正常工作。
明确定义'doc_type:true'真的是现有字段的禁止更改(如果字段将此设置设为默认值)?
是否将已分析的字符串字段转换为多字段,并将doc_values的行为从不受支持更改为true(因为子字段未被分析)是否禁止更改现有字段?
索引是否永久损坏或更改是否可以撤消。怎么样?通过将typeA更改为以前的设置(我不确定是否有帮助或破坏索引,如果它尚未销毁)或通过将typeB更改为适合typeA。我不想改变任何像我的队友那样粗心的东西,因为重新索引6百万份文件不是我喜欢的选项......