Mapping Type映射属性
mapping是对索引库中文档的约束,有以下类型。
- text:用于分析和全文搜索,通常适用于长文本字段。
- keyword:用于精确匹配,不会进行分析,适用于标签、ID 等精确匹配场景。
- integer、long、float、double:用于存储数字数据。
- date:用于存储日期数据。
- boolean:用于存储布尔值(true/false)。
- object:用于嵌套对象,通常用于存储结构化的数据。
- nested:与 object 类似,但允许嵌套查询。
Index属性
index 属性用于字段映射(mapping)中,来指示该字段是否被索引、是否可搜索,或者是否需要其他特殊的处理。该属性的设置直接影响字段的存储方式和搜索效率。在实际开发中,会有一些附带的值这些值并不需要搜索,如:备注,商品的封面URL等他默认是Index:true,需给这些字段设置成false。
analyzer 分词器
指定使用哪个分词器。
properties字段
用来表示字段。
索引库操作
Elasticsearch提供的所有API都是Restful的接口,遵循Restful的基本规范。
创建索引库
商品表字段
抽出搜索商品的字段
抽出搜索商品的字段在es创建索引。
- 商品名称:参与搜索
- 商品价格:参与搜索,按价格区间搜索
- 商品封面:不参与搜索,搜索时需要一起返回
- 限购次数:不参与搜索,搜索时需要一起返回
请求方式:PUT http://172.23.4.130:9200/goods
- goods 库名
- PUT Restful 风格
javascript
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_smart"
},
"pie": {
"type": "long"
},
"cover":
{
"type": "keyword",
"index": false
},
"quota":{
"type": "keyword",
"index": false
}
}
}
}
创建成功
javascript
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "goods"
}
查询所有
请求方式:GET http://172.23.4.130:9200/goods
查询成功
javascript
{
"goods": {
"aliases": {},
"mappings": {
"properties": {
"cover": {
"type": "keyword",
"index": false
},
"pie": {
"type": "long"
},
"quota": {
"type": "keyword",
"index": false
},
"title": {
"type": "text",
"analyzer": "ik_smart"
}
}
},
"settings": {
"index": {
"routing": {
"allocation": {
"include": {
"_tier_preference": "data_content"
}
}
},
"number_of_shards": "1",
"provided_name": "goods",
"creation_date": "1735986796036",
"number_of_replicas": "1",
"uuid": "jCkFMX3qSzimtWEmWHvpwQ",
"version": {
"created": "7120199"
}
}
}
}
}
删除索引库
请求方式:DELETE http://172.23.4.130:9200/goods
修改索引库
在Elasticsearch不可以对已有的索引进行修改,但是可以添加新的索引。
请求方式:PUT http://172.23.4.130:9200/goods/_mapping
javascript
{
"properties": {
"id": {
"type": "keyword",
"index": false
}
}
}