跳转到内容

索引和映射


Elasticsearch(简称 ES)中,索引(Index)映射(Mapping) 是两个重要概念,它们决定了数据的组织方式和搜索性能。

在 Elasticsearch 中,索引 类似于关系型数据库中的 数据库(Database)表(Table),用于存储和管理一组结构相似的文档。

  1. 一个索引包含多个文档,每个文档都有唯一的ID
  2. 每个索引都有自己的倒排索引结构,允许 Elasticsearch 进行高效搜索。
  3. Elasticsearch 不是把所有数据存到一个地方,而是把数据拆分成多个小块(分片,Shard),然后分布存储在不同的服务器上。这样既能提高存储容量,也能提高查询速度,并支持分布式扩展。

映射(Mapping) 定义了索引中 字段(Field) 的类型和属性,相当于数据库中的表结构

  1. Elasticsearch 是 无模式(Schema-Free) 的,可以自动推断数据类型,但也可以手动定义数据结构。
  2. 通过 Mapping,可以控制字段类型、索引方式、分词规则等。

手动创建Mapping:

PUT blog
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word" // 中文分词
},
"content": {
"type": "text",
"analyzer": "ik_smart"
},
"publish_date": {
"type": "date"
},
"views": {
"type": "integer"
}
}
}
}
  • title content:定义为 text 类型,使用中文分词器 ik_max_wordik_smart
  • publish_date:定义为 date 类型,存储发布时间。
  • views:定义为 integer 类型,存储浏览量。
MySQLElasticsearch说明
TableIndex索引(index),就是文档的集合,类似数据库的表(table)。
RowDocument文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式。
ColumnField字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)。
SchemaMappingMapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)。
SQLDSLDSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD。