在Elasticsearch中,Type(类型)是一种组织数据的方式,它定义了索引中的逻辑数据分组。在Elasticsearch的早期版本中,一个索引可以包含多个类型,每个类型都有自己的映射(mapping)和字段定义。每个类型的文档都属于相同的索引,但它们有不同的字段结构。
然而,在Elasticsearch 7.x 版本及以后的版本中,类型(Type)的概念已经被逐渐废弃,官方推荐使用单一索引多字段的方式来替代。因此,在新版本中,一个索引下只能包含一个类型,而多个类型的使用已不再被支持。这一变化是为了简化数据建模和提高索引的灵活性。
早期版本的类型示例:
假设在Elasticsearch 6.x 版本的早期版本中,有一个名为 my_index
的索引,包含两个类型:user
和 product
。
PUT /my_index
{
"mappings": {
"user": {
"properties": {
"name": { "type": "text" },
"age": { "type": "integer" }
}
},
"product": {
"properties": {
"name": { "type": "text" },
"price": { "type": "float" }
}
}
}
}
在上述例子中,my_index
索引包含两个类型:user
和 product
。每个类型都有自己的字段映射。
当前版本的单一索引多字段示例:
在Elasticsearch 7.x 版本及以后的版本中,建议使用单一索引多字段的方式,而不再使用多个类型。以下是一个示例:
PUT /my_index
{
"mappings": {
"properties": {
"name": { "type": "text" },
"age": { "type": "integer" },
"price": { "type": "float" }
}
}
}
在这个例子中,my_index
索引包含一个类型为 properties
,并且包含了 name
、age
和 price
字段。这种方式更加简洁且更符合现代的数据建模和查询需求。
总的来说,现代的Elasticsearch数据建模更加灵活,推荐使用单一索引多字段的方式,而不再使用多个类型。这种变化使得数据的管理更加简便,同时也提高了查询的效率。
Was this helpful?
0 / 0