前言
elasticsearch:7.17.21
JDK:1.8
springboot:2.7.4
索引库(mapping)
-
对字段属性的约束,相当于MySQL建库建表
-
type(基本)
- 字符串
- text (可以被分词,具体规则根据analyzer划分)
- keyword (不会被分词)
- 数值
- long
- integer
- short
- byte
- double
- float
- 布尔
- boolean
- 日期
- date
- 对象
- object
- 字符串
-
index:是否创建索引,默认为
true
。(搜索时能被检索) -
analyzer:分词器
-
properties:字段的子字段
创建
- 实体类
{
"name":{
"firstName":"M",
"lastName":"redust"
},
"age":20,
"weight":54.4
"isMarried":false,
"introduction":"不会编程的小白",
"email":"123@qq.com",
"score":[44.1, 44.2, 44.3, 44.4],
}
- 创建对应的索引约束
- aliases别名作为标识,可理解为table_name,一个索引可以有多个别名,而且一个别名只能指向一个索引
- 注意:搜索库添加后不能对此修改,但可以新增
PUT /user/_mapping
- 建立索引基本是根据数据库的表字段去做响应的mapping
PUT /user
{
"aliases": {
"user_v1": {}
},
"mappings": {
"properties": {
"name": {
"type": "object",
"properties": {
"firstName": {
"type": "keyword"
},
"lastName": {
"type": "keyword"
}
}
},
"email": {
"type": "keyword",
"index": false
},
"introduction": {
"type": "text",
"analyzer": "ik_smart"
}
}
}
}
删除
DELETE /user
修改
PUT /user/_mapping
{
"properties":{
"age":{
"type": "integer"
}
}
}
查询
GET /user
文档
-
对索引添加数据,相当于插入SQL数据
-
语法:
方法 /索引/_doc/id?
-
如果不指定id则es使用默认id生成策略
-
每次操作返回结果的解析
{
"_index" : "user", # 索引
"_type" : "_doc", # 类型
"_id" : "1", #id标识
"_version" : 2, # 版本控制,每做一次数据改动就会自增1
"result" : "deleted", # 操作方法结果类型
"_shards" : {
"total" : 2,
"successful" : 1, # 方法是否成功
"failed" : 0 # 方法是否失败
},
"_seq_no" : 1,
"_primary_term" : 1
}
新增
POST /user/_doc/1
{
"name":{
"firstName":"M",
"lastName":"redust"
},
"email":"123@qq.com",
"introduction":"不会编程的小白"
}
删除
DELETE /user/_doc/1
修改
- 方式一:全量修改
- 如果存在,先删除旧文档,再去做新增操作
- 如果不存在,新增操作
PUT /user/_doc/1
{
"name":{
"firstName":"M",
"lastName":"redust"
},
"email":"321@qq.com",
"introduction":"不会编程的红尘"
}
- 方式二:增量修改
- 语法:PUT /索引/
_update
/id - 修改指定字段
- 语法:PUT /索引/
POST /user/_doc/1
{
"doc":{
"email":"666@qq.com"
}
}
查询
GET /user/_doc/1