在为我的类型type1
创建映射时,我声明了3个字段,
但在对数据编制索引时,body
也可以包含许多其他字段,而这些字段在我的mapping
中不存在
esClient.indices.putMapping({
index: 'index1',
type: 'type1',
body: {
properties: {
Name: {
type: 'string',
},
Description: {
type: 'string',
},
Address: {
type: 'string',
},
}
}
})
此处,data
对象还有两个字段class
和organization
,默认情况下,ElasticSearch会为我的映射中未提及的额外字段创建类型。
const data = {
Name: 'pauline',
Description: 'he\'s pauline from academy',
Address: 'avenue street',
class: 'Standard form 1', // ignore this while indexing
organization: 'Escalar Communications' // ignore this while indexing
}
那么,有没有办法只对_mappings
中存在的字段数据进行索引并排除其他数据,我的意思是设置一些选项。
或者我必须这样做mineself
esClient.index({
index: 'index1',
type: 'type1',
body: data,
}, (error, response) => {
console.log(error, response);
});
答案 0 :(得分:0)
是的,您可以通过向映射中添加"dynamic": false
来忽略映射中不存在的字段。默认情况下是真的。
esClient.indices.putMapping({
index: 'index1',
type: 'type1',
body: {
dynamic: false, <--- add this
properties: {
Name: {
type: 'string',
},
Description: {
type: 'string',
},
Address: {
type: 'string',
},
}
}
})