elasticsearch创建mysql索引_ElasticSearch 索引、文档的使用

#####增#######

#添加一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值