一、文档的基本操作
1.添加文档与自动映射
(1)添加文档
返回的version:1,第一次创建文档是1,之后修改的话,会累加。
如果创建文档时不指定id,那么es会自动分配:
(2)自动映射
(1)中创建的字段,比如name,自动映射成text类型,id映射成long类型,create_date映射成date类型
(3)创建了9条文档,前4条是手动指定了id,后5条是自动生成的id
(4)分词查找,只支持英文分词查找
(5)不支持中文分词查找
中文的话,只能一个字一个字的进行匹配
2.删除
根据id删除
我们在执行删除操作时,es只是帮我们做了一个逻辑删除,其实磁盘的数据没有被删除,当磁盘文件,数据越来越多了,es才会做被动的清理,才会真正的从磁盘删除
3.修改
局部字段数据的修改,根据id修改
查看修改后的数据:
全量替换式修改,根据id修改,修改成功之后,版本号也会累加
查看修改后数据:
4.查询
(1)根据id查询:_id,这里的这个id是数据的主键,并不是source里的id
(2)查询所有
took:代表耗费的时间
hits:代表命中的记录
max_score:分数,相关性,搜索匹配度
(3)查询某个属性,这里我们查找id
(4)查找多个属性,这里我们查找id,name
(5)查询所有数据的某些属性,这里我们查找所有数据的id,name属性
返回的结果:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 7,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "my_doc",
"_type": "_doc",
"_id": "2",
"_score": 1,
"_source": {
"name": "imooc-2",
"id": 1002
}
},
{
"_index": "my_doc",
"_type": "_doc",
"_id": "3",
"_score": 1,
"_source": {
"name": "imooc-3",
"id": 1003
}
},
{
"_index": "my_doc",
"_type": "_doc",
"_id": "ttjUKXsBxMbEWf45Mejb",
"_score": 1,
"_source": {
"name": "imooc-6",
"id": 1006
}
},
{
"_index": "my_doc",
"_type": "_doc",
"_id": "t9jUKXsBxMbEWf45W-gE",
"_score": 1,
"_source": {
"name": "imooc-7",
"id": 1007
}
},
{
"_index": "my_doc",
"_type": "_doc",
"_id": "udjVKXsBxMbEWf45reh4",
"_score": 1,
"_source": {
"name": "imooc-8",
"id": 1008
}
},
{
"_index": "my_doc",
"_type": "_doc",
"_id": "1",
"_score": 1,
"_source": {
"name": "我是慕课网",
"id": 1001
}
},
{
"_index": "my_doc",
"_type": "_doc",
"_id": "tdjTKXsBxMbEWf45_ejV",
"_score": 1,
"_source": {
"name": "小红",
"id": 4
}
}
]
}
}
(6)查询某个文档是否存在
响应是200,就说明这个文档存在
响应是404,说明此文档不存在
为什么不用GET查找方法来判断一个文档是否存在?
原因一,用HEAD请求方法来判断,这是规范
原因二, 用HEAD请求方法,返回的数据大小比较小,如下,只有67B,而用GET查找的数据返回的大小很大,如下,达到了210B,所以用HEAD请求方法来判断一个文档是否存在,尚佳。