#####增#######
#添加一个document,需要用一个唯一的id来标识此document
#6.x还可以自己新建一个type,7.x只能使用内置的_doc,不能自己新建type
PUT 192.168.1.9:9200/mall/_doc/1
{
"goods_name":"苹果",
"goods_price":10.00,
"goods_description":"新鲜苹果,10元一斤"
}
#不用传递所有的字段
#添加一个document可以不指定id,不指定id时ES会自动生成一个唯一的id
#这时不是新增文档,而是修改内置的_doc,所以要用POST
POST192.168.1.9:9200/mall/_doc
{"goods_name":"芒果","goods_price":6.00,"goods_description":"香甜芒果,6元一斤"}
#如果返回的数据中没有"action.auto_create_index":"false",说明这个字段是true,自动创建索引是开启的GET 192.168.1.9:9200/_cluster/settings
#如果自动创建索引是开启的,创建文档时,如果索引不存在,会先自动创建索引
PUT 192.168.1.9:9200/mall/_doc/1
#新建文档时,如果文档已存在会覆盖原来的文档,可以加参数?op_type=create,仅创建,如果文档已存在则不作任何操作
PUT localhost:9200/nba/_doc/1?op_type=create
{
"goods_name":"芒果",
"goods_price":6.00,
"goods_description":"香甜芒果,6元一斤"
}
####查####
#查询一个document
GET 192.168.1.9:9200/mall/_doc/1
#同时查询多个文档。因为要在body中传递数据,用POST
POST localhost:9200/_mget
#对象数组,这些文档可以是不同的index中的
{
"docs" : [
{
"_index" : "mall",
"_type" : "_doc",
"_id" : "1"
},
{
"_index" : "mall",
"_type" : "_doc",
"_id" : "2"
}
]
}
#如果指定了index,那就只能是这个index中的文档,body中不用指定index
#POST 192.168.1.9:9200/mall/_mget
{
"docs" : [
{
"_type" : "_doc",
"_id" : "1"
},
{
"_type" : "_doc",
"_id" : "2"
}
]
}
#如果指定了index、type,那就只能是这个index、type中的文档,body中不用指定index、type
#POST 192.168.1.9:9200/mall/_doc/_mget
{
"docs" : [
{
"_id" : "1"
},
{
"_id" : "2"
}
]
}
#body也可以这样写
{
"ids" : ["1", "2"]
}
####改####
#修改整个文档
POST 192.168.1.9:9200/mall/_doc/1
{
"goods_name": "苹果",
"goods_price": 16.0,
"goods_decription":""
}
#此种方式是先删除原文档,再写入,就算只修改文档某个字段的值,都需要传入所有的字段,很麻烦
#如果要用这种方式,不要一个字段一个字段地敲,先GET查询此文档,把_source里的字段复制粘贴到body中去改
#修改|添加文档的多个字段
POST 192.168.1.9:9200/mall/_update/1
#上面查询多个文档,用的复数docs,这里修改单个文档,用单数doc
{
"doc": {
"goods_price": 16.0,
"goods_description":"..."
}
}
#这种方式只修改指定的字段,如果之前该字段不存在,会自动添加该字段
#修改|添加文档的单个字段
POST 192.168.1.9:9200/mall/_update/1
{
"script": "ctx._source.goods_price = 18"
}
#ctx是context 上下文。上面的值18是数值型,如果是字符串要加单引,或者"转义
#如果该字段不存在,会自动添加
#移除文档的某个字段。将上面的body改一下即可
{
"script": "ctx._source.remove('goods_description')"
}
#可以使用参数
POST 192.168.1.9:9200/mall/_update/1
{
"script": {
"source": "ctx._source.goods_price = params.increment",
"params":{
"price":15.0
}
}
}
#可以进行数学运算,比如 ctx._source.goods_price += params.increment
#更新文档时如果文档不存在,不报错,可以加一个upsert字段,如果指定的文档不存在,会先自动创建该文档
POST 192.168.1.9:9200/mall/_update/3
{
"script": {
"source": "ctx._source.goods_price = params.increment",
"params":{
"increment":15.0
}
},
"upsert":{
}
}
#upsert,即update的前部+insert的后部,insert有2层含义:1、更新文档时如果文档不存在,会自动往索引中插入该文档;2、在upsert中可以插入一些字段,创建该文档后初始化字段
"upsert":{
"goods_price":0.0,
"goods_description":""
}
#比如说操作是goods_price+=increment,创建文档后需要给它初始化,才+得上去,不然默认值是null,将null和一个值相加会报错。
#如果只是=赋值操作,倒不用初始化
####删####
#删除一个文档
DELETE 192.168.1.9:9200/mall/_doc/1