使用Elasticsearch我在我的索引中添加了一个名为" pets"的文档,如下所示:
{
"name" : "Piper",
"type" : "dog"
}
然后我添加了第二个文件:
{
"name" : "Max",
"type" : "dog",
"breed": "Scottish Terrier"
}
现在,我明白了我的宠物" index最初是根据我的第一个文档创建的(除非我在某个时刻定义了一个映射)。但是,我很想知道ES是否可以建议基于现有数据的映射(如MySQL'建议表结构")或者可能自动更新映射。
答案 0 :(得分:2)
是的,ElasticSearch会自动更新映射。
有时,ElasticSearch文档中的语言听起来就像设置了映射一样,无法更改。这仅适用于现有字段。任何其他字段都将自动分配一个类型并添加到映射中。
请记住,您始终可以使用get mapping API检查索引的映射: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-get-mapping.html
例如,使用上面的示例,在您的第一个“宠物”文档之后,映射为:
{
"my_index": {
"mappings": {
"pet": {
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
}
}
在第二个“宠物”文档之后,您的映射是:
{
"my_index": {
"mappings": {
"pet": {
"properties": {
"breed": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
}
}
我不熟悉MySQL的建议表结构,所以我不能评论......