新增文档 PUT
指定id 新增数据 _doc
curl -X PUT "localhost:9200/nba/_doc/1" -H 'Content-Type:application/json' -d '
{
"name":"哈登",
"team_name":"火箭",
"position":"得分后卫",
"play_year":"10",
"jerse_no":"13"
}
'
shell 中需如下填写
curl -X PUT "localhost:9200/nba/_doc/1" -H 'Content-Type:application/json' -d '{"name":"哈登","team_name":"火箭","position":"得分后卫","play_year":"10","jerse_no":"13"}'
返回一个json
{
"_index":"nba",
"_type":"_doc",
"_id":"1",
"_version":1,
"result":"created",
"_shards"{
"total":2,
"successful":1,
"failed":0
},
"_seq_no":0,
"_primary_term":3
}
不指定id 自动新增数据 POST
curl -X POST "localhost:9200/nba/_doc" -H 'Content-Type:application/json' -d '
{
"name":"库里",
"team_name":"勇士",
"position":"组织后卫",
"play_year":"10",
"jerse_no":"30"
}
'
自动创建索引 PUT
查看 auto_create_index
开关状态
curl -X GET "localhost:9200/_cluster/settings"
返回一个json
{
"persistent": {},
"transient": {}
}
当索引不存在并且auto_create_index为True的时候,新增文档时会自动创建索引
修改 auto_create_index
状态
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type:application/json' -d '
{
"persistent":{
"action.auto_create_index":"false"
}
}
'
返回一个json
{
"acknowledged": true,
"persistent": {
"action": {
"auto_create_index": "false"
}
},
"transient": {}
}
指定操作类型 ?op_type=create
新增文档时防止误操,把已有的文档更新掉,可以指定操作类型
要新增文档,重复与已有id重复,不指定操作类型时,会导致数据更新,未达到目标要求
指定操作类型,当输入重复的id号新增数据,会提示报错
curl -X PUT "localhost:9200/nba/_doc/1?op_type=create" -H 'Content-Type:application/json' -d '
{
"name":"大胡子",
"team_name":"火箭",
"position":"得分后卫",
"play_year":"10",
"jerse_no":"13"
}
'
查看文档
指定id 查看文档 GET
curl -X GET "localhost:9200/nba/_doc/1"
查看多个文档 POST
_mget
几种写法查看多个文档
curl -X POST "localhost:9200/_mget" -H 'Content-Type:application/json' -d '
{
"docs":[
{
"_index":"nba",
"_type":"_doc",
"_id":"1"
},
{
"_index":"nba",
"_type":"_doc",
"_id":"2"
}
]
}
'
- 先指定索引
curl -X POST "localhost:9200/nba/_mget" -H 'Content-Type:application/json' -d '
{
"docs":[
{
"_type":"_doc",
"_id":"1"
},
{
"_type":"_doc",
"_id":"2"
}
]
}
'
- 指定索引和文档
curl -X POST "localhost:9200/nba/_doc/_mget" -H 'Content-Type:application/json' -d '
{
"docs":[
{
"_id":"1"
},
{
"_id":"2"
}
]
}
'
- 指定了索引和文档,传递了一个id数组
curl -X POST "localhost:9200/nba/_doc/_mget" -H 'Content-Type:application/json' -d '
{
"ids":["1","2"]
}
'
修改文档 POST
_update
根据提供的文档片段更新数据
curl -X POST "localhost:9200/nba/_update/1" -H 'Content-Type:application/json' -d '
{
"doc":{
"name":"大胡子",
"team_name":"火箭",
"position":"得分后卫",
"play_year":"20",
"jerse_no":"13"
}
}
'
向_source
字段,增加一个字段
script
表示脚本
ctx
上下文
\
json中不能有两个双引号,需使用反斜线
curl -X POST "localhost:9200/nba/_update/1" -H 'Content-Type:application/json' -d '
{
"script":"ctx._source.age = 18"
}
'
从_source
字段,删除一个字段
curl -X POST "localhost:9200/nba/_update/1" -H 'Content-Type:application/json' -d '
{
"script":"ctx._source.remove(\"age\")"
}
'
根据参数值,更新指定文档的字段内容
curl -X POST "localhost:9200/nba/_update/1" -H 'Content-Type:application/json' -d '
{
"script":{
"source":"ctx._source.age += params.age",
"params":{
"age":4
}
}
}
'
upsert
当指定的文档不存在时,upsert参数包含的内容将会被插入到索引中,作为一个新文档;
如果指定的文档存在,ES引擎将会执行指定的更新逻辑
curl -X POST "localhost:9200/nba/_update/3" -H 'Content-Type:application/json' -d '
{
"script":{
"source":"ctx._source.allstar += params.allstar",
"params":{
"allstar":4
}
},
"upsert":{
"allstar":1
}
}
'
删除文档
根据指定id 删除文档
curl -X DELETE "localhost:9200/nba/_doc/3"