仅索引映射中存在的字段 - ElasticSearch v5.2.2

时间:2017-03-10 10:17:16

标签: javascript elasticsearch

在为我的类型type1创建映射时,我声明了3个字段,

但在对数据编制索引时,body也可以包含许多其他字段,而这些字段在我的mapping中不存在

esClient.indices.putMapping({
    index: 'index1',
    type: 'type1',
    body: {
        properties: {
            Name: {
                type: 'string',
            },
            Description: {
                type: 'string',
            },
            Address: {
                type: 'string',
            },
        }
    }
})

此处,data对象还有两个字段classorganization,默认情况下,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);
});

1 个答案:

答案 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',
            },
        }
    }
})