索引库就类似数据库表,mapping映射就类似表的结构。
我们要向es中存储数据,必须先创建“库”和“表”。
一、索引库操作
1.1mapping映射属性
mapping是对索引库中文档的约束,常见的mapping属性包括:
1.2创建索引库和映射
索引库的CRUD 这里我们统一使用postMan编写DSL的方式来演示。
基本语法:
- 请求方式:PUT
- 请求路径:/索引库名,可以自定义
- 请求参数:mapping映射
例:PUT localhost:9200/testbook
格式:
{
"mappings":{
"properties":{
"age":{
"type":"integer"
},
"weight":{
"type":"float"
},
"email":{
"type":"keyword",
"index":false
},
"score":{
"type":"float"
},
"name":{
"properties":{
"firstName":{
"type":"keyword"
},
"lastName":{
"type":"keyword"
}
}
}
}
}
}
1.3查询索引库
基本语法:
格式:
GET /索引库名
例:GET localhost:9200/testbook
1.4修改索引库
倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引, 这简直是灾难。因此索引库一旦创建,无法修改mapping。
虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。
语法说明:
PUT /索引库名/_mapping
{
"properties": {
"新字段名":{
"type": "integer"
}
}
}
例:PUT localhost:9200/testbook/_mapping
{
"properties":{
"class":{
"type":"integer"
}
}
}
1.5删除索引库
语法:
- 请求方式:DELETE
- 请求路径:/索引库名
- 请求参数:无
格式:
DELETE /索引库名
例:DELETE localhost:9200/testbook
总结:
创建索引库:PUT /索引库名
查询索引库:GET /索引库名
删除索引库:DELETE /索引库名
添加字段:PUT /索引库名/_mapping
二、文档操作
2.1新增文档
语法:
POST /索引库名/_doc/文档id
{
"字段1": "值1",
"字段2": "值2",
"字段3": {
"子属性1": "值3",
"子属性2": "值4"
},
// ...
}
例:POST localhost:9200/testbook/_doc/1
{
"age": 18,
"weight":55.5,
"class":1,
"email": "lili@163.com",
"name": {
"firstName": "同学",
"lastName": "李"
},
"score":100.0
}
2.2查询文档
根据rest风格,新增是post,查询应该是get,不过查询一般都需要条件,这里我们把文档id带上。
语法:
GET /{索引库名称}/_doc/{id}
例: GET localhost:9200/testbook/_doc/1
2.3删除文档
删除使用DELETE请求,同样,需要根据id进行删除:
DELETE /{索引库名}/_doc/id值
例: DELETE localhost:9200/testbook/_doc/1
2.4修改文档
修改有两种方式:
- 全量修改:直接覆盖原来的文档
- 增量修改:修改文档中的部分字段
全量修改
全量修改是覆盖原来的文档,其本质是:
注意:如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。
语法:
PUT /{索引库名}/_doc/文档id
{
"字段1": "值1",
"字段2": "值2",
// ... 略
}
例:PUT localhost:9200/testbook/_doc/1
{
"age": 18,
"weight":55.5,
"class":2,
"email": "lili@163.com",
"name": {
"firstName": "同学",
"lastName": "赵"
},
"score":99.0
}
增量修改
增量修改是只修改指定id匹配的文档中的部分字段。
POST /{索引库名}/_update/文档id
{
"doc": {
"字段名": "新的值",
}
}
例:POST localhost:9200/testbook/_doc/1
{
"doc":{
"name":"ken"
}
}
总结
创建文档:POST /{索引库名}/_doc/文档id { json文档 }
查询文档:GET /{索引库名}/_doc/文档id
删除文档:DELETE /{索引库名}/_doc/文档id
修改文档:
- 全量修改:PUT /{索引库名}/_doc/文档id { json文档 }
- 增量修改:POST /{索引库名}/_update/文档id { "doc": {字段}}