文档操作
语法参考:
Document APIs | Elasticsearch Guide [7.4] | Elastic
新增与修改文档
PUT /索引库名/_doc/文档id
{
"key": value,
...
"key": value
}
注意:如果文档IP不存在是新增
如果存在是修改文档,会直接覆盖掉原文档
查看文档
GET /索引库名/_doc/id
修改文档(增量)
POST /索引库名/_update/文档id
{
"doc":{
"字段1": 值1,
"字段2": 值2,
...
}
}
注:在原文档基础上进行修改某些字段
删除文档
DELETE /索引库名/_doc/id值
动态映射
解决问题
如果新增文档的结构,与mapping结构不一致 ,es会检查文档中的字段是否有对应的mapping,如果没有,则按照默认的mapping规则来创建索引
例如
//插入的文档结构,与mapping结构不符。
//itcast索引库中原本没有color、weight、isSoldOut三个字段
PUT /itcast/_doc/2
{
"title": "字符串",
"price": 819,
"images": "http://www.jd.com/xxxx.jpg",
"quantity": 150,
"weight": 0.22,
"color": "black",
"isSoldOut": false
}
查询映射看看:GET /itcast/_mapping
{
"itcast" : {
"mappings" : {
"properties" : {
"color" : { //增加了color字段,是字符串。ES无法判断类型,
//因此存储了两种映射类型。color是text类型,
//color.keyword是keyword类型
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"images" : {
"type" : "keyword",
"index" : false
},
"isSoldOut" : { //增加了isSoldOut字段,类型boolean
"type" : "boolean"
},
"price" : {
"type" : "double"
},
"quantity" : {
"type" : "integer"
},
"title" : {
"type" : "text",
"analyzer" : "ik_smart"
},
"weight" : { //增加了weight字段,类型float
"type" : "float"
}
}
}
}
}