mapping映射属性
概念:Mapping属性是在Elasticsearch中用于定义索引中字段的类型和属性的设置。它描述了如何将文档的字段映射到底层的索引结构中。
Mapping属性在Elasticsearch中类似于MySQL中的表结构定义。它们都用于定义数据的结构和类型,以确保数据在存储和查询时的一致性和准确性。
在Elasticsearch中,常见的Mapping属性包括:
type:字段的数据类型
index:是否索引
analyzer:分词器
properties:子字段
type的简单类型:
字符串:text(可分词文本)、keyword(精确值)
数值: long 、integer 、short 、byte、 double、 float
布尔:boolean
日期: date
对象:object
index的类型:
true: 创建索引,可以进行搜索
false:不创建索引不可以进行搜索
analyzer的类型:
分词器类型,如ik_smart、ik_max_word、english
properties:
该字段的子字段
了解完mapping的常见属性之后第一感觉可能很蒙,我们可以试着根据实际案例来理解mapping属性。
索引库的增删改查
1、创建索引库:
PUT /my_index
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_smart"
},
"emali": {
"type": "keyword",
"index": "false"
},
"name": {
"type": "object",
"properties": {
"firstname":{
"type":"keyword"
}
}
},
"price": {
"type": "double"
},
"created_at": {
"type": "date",
"format": "yyyy-MM-dd"
}
}
}
}
2、查询索引库:
要查询 Elasticsearch 中的索引,可以使用以下语法:
1、获取所有索引
GET /_cat/indices
2、查找特定索引是否存在
HEAD /<索引名称>
这将返回一个状态码,指示索引是否存在。如果返回 200 OK,则表示索引存在;如果返回 404 Not Found,则表示索引不存在。
例如:
HEAD /my_index
3、获取索引的映射(mapping):
GET /<索引名称>/_mapping
4、搜索索引中的文档:
GET /<索引名称>/_search
{
"query": {
"match_all": {
}
}
}
这里搜索了一个包含文档数据的索引库
3、删除索引库:
DELETE /<索引库名>
例如,要删除名为my_index的索引,可以执行以下请求:
DELETE /my_index
执行该请求后,如果索引存在并成功删除,您将收到一个表示成功的响应。例如,响应中的acknowledged字段将为true,表示删除操作已被确认,删除索引是一个不可逆的操作,请谨慎执行。
4、修改索引库:
索引库一旦创建就无法在进行修改了,但是我们可以添加新的字段,案例如下:
PUT /my_index/_mapping
{
"properties": {
"field1": {
"type": "text"
},
"field2": {
"type": "keyword"
}
}
}
上述示例中,我们将索引my_index的映射修改为包含两个字段field1和field2。field1的类型为"text",field2的类型为"keyword"。
**注意:**我们需要保证索引库存在,如果不存在则会报错。同时我们要注意新添加的字段名不能跟原来的重复,除非定义类型也相同。
总结
1、创建索引库:使用PUT请求创建一个新的索引库,并定义其名称、映射和设置等属性。
2、删除索引库:使用DELETE请求删除整个索引库及其所有文档和设置。
3、修改索引库设置:使用PUT请求修改索引库的设置,例如分片数、副本数等。
4、查看索引库:使用GET请求检索现有的索引库信息,包括索引名称、映射、设置等。