- 对es索引,类型,文档,以及字段的理解(对比下关系型数据库)
- 我们用index和create两种方式创建索引,比如创建一个员工的信息
index创建索引:PUT megacorp/employee/1
POST megacorp/employee/1
{
“user” : “Mike”
}
create创建索引:PUT megacorp/employee/1?op_type=create
index和create创建索引的不同之处在于:index创建索引的时候,如果索引相同,那么对应的版本号会加1,是相当于把原来的索引覆盖掉,create如果创建相同的索引,会直接报错
(create创建还有另一种写法:PUT megacorp/_create/1,这样创建的时候,如果最后的索引相同,也会报错,当时有个疑问,如果megacorp这个索引下面有两个类型,一个是employee1,和employee2,那这种创建方式是指定在那个类型下面的呢?创建第二个类型的时候报错
百度之后说是:版本不允许一个index下面有多个type,并且官方说是在接下来的7.0版本中会删掉type),这个时候也解释了在之后的学习当中,7.0及以上的版本为什么所有的type官方规范为_doc的原因了,也就是说,创建文档的时候变成了PUT megacorp/_doc/1?op_type=create
- 查询语法:比较简单的基本查询GET megacorp/_doc/3
- 更新
POST index_test/test01/3/ { "doc":{ "user" : "Jack" } }
- 删除
DELETE megacorp/_doc/3
- 批量操作_bulk
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test2", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
分别是创建,删除操作,每个操作是互不影响的
- 批量查找
GET /_mget
{
"docs" : [
{
"_index" : "test",
"_id" : "1"
},
{
"_index" : "test",
"_id" : "2"
}
]
}
获取test中1和2的数据,运行结果:
- 清除数据
#清除数据
DELETE users
DELETE test
DELETE test2