ES RESTFUL操作

说明

index_name:索引名称

_doc:文档类型,默认为__doc。ES6.0以后不建议使用

id:文档id

添加文档

POST http://ip:port/index_name/_doc/id
{
	"name":"张三",
	"age":20,
	"sex":"男",
	"mobile":"138001238000"
}

删除文档

DELETE http://ip:port/index_name/_doc/id

注意:ES是逻辑删除,设置一个已删除的标记,每次操作会文档版本号会 +1

修改文档

1.修改指定的字段

POST http://ip:port/index_name/_doc/id/_update?version=2
{
	"doc":{
		"age":18
	}
}

version=2,表示文档版本号,es的乐观锁。

2.全部更新,所有字段都需要加上

PUT http://ip:port/index_name/_doc/id
{
	"name":"张小三",
	"age":18,
	"sex":"男",
	"mobile":"138001238001"
}

查询

1.根据id查询文档,并指定查询的字段name,age

GET http://ip:port/index_name/_doc/id?_source=name,age

2.查询索引中所有文档,并指定查询的字段

GET http://ip:port/index_name/_doc/_search?_source=name,age

3.判断文档是否存在

HEAD http://ip:port/index_name/_doc/id

通过http状态码判断。200表示存在,404表示不存在

给文档增加字段

增加一个address和email

POST http://ip:port/index_name/mapping
{
	"properties":{
		"address":{
			"type":"text",
			"index":true  //默认true,是否索引(索引的才能被搜索)
		},
		"email":{
			"type":"keword",
			"index":"true"
		}
	}
}

type:数据类型

index:是否索引。索引的字段才能被搜索(默认true)

PUT和POST的异同

1.如果指定了文档id,两者都可以更新指定的文档。
2.如果未指定文档id,put时会报错。POST时会由ES分配一个id,然后新增文档
3.有些博客指出post只会更新指定的字段,未指定的不处理。put则会更新所有字段,未指定的置空。但是我在6.8.13上发现,两者都会更新所有字段

从第二点也可以看出,put是幂等操作

posted @ 2020-12-15 17:57  划破黑夜  阅读(418)  评论(0编辑  收藏  举报