ElasticSearch教程2021版入门(二)基本增删改查
一、基本概念
1.倒排索引概念
倒排索引与正排索引相对,举个例子。 有这样一张表,如下:
id | content |
---|
1 | 我的名字是张三,我来自山东济南 | 2 | 我的名字是李四,我来自湖北武汉 | 3 | 我的名字是赵六,我来自山东青岛 |
我们传统的查询方法是根据id查出content,例如根据id为1的查询出content为 我的名字是张三,我来自山东济南 。这就是正排索引。
所谓的倒排索引即根据content来找id,假设上表部分数据经过分词后倒排索引即如图所示。
content | id |
---|
我的名字 | 1,2,3 | 山东 | 1,3 | 湖北 | 2 | 济南 | 1 | 武汉 | 2 | 青岛 | 3 |
根据上面这个表我们可以看出,正排索引是根据id找内容,倒排索引是根据内容找id。
2.RESTful风格说明
RESTful是一种api风格。在互联网上所有的资源都有一套统一的资源定位符,如
https://img-home.csdnimg.cn/images/20201124032511.png
RESTful风格的个人理解是不在资源定位符中体现对资源的操作,这样不安全,而是通过不同的请求方式来表示不同的操作,一般来说,put 表示有幂等性的新增或修改,post表示没有幂等性的新增或修改,get表示查询,delete表示删除。
只要发送同样的请求,有幂等性的请求方式是结果相同的,同时不允许重复的,没有幂等性的则结果不同,不要求是否重复。
如put,delete,head是有幂等性的,而post则没有幂等性。
3.索引基本操作
(1)创建索引
PUT http://localhost:9200/user

(2)索引详情
GET http://localhost:9200/user

(3)查看所有索引
GET http://localhost:9200/_cat/indices?v

(4)删除索引
DELETE http://localhost:9200/user
 
4.文档基本操作
(1)创建文档
POST http://localhost:9200/user/_doc
{
"username":"蔡徐坤",
"password":"123456",
"hobby":["唱跳","rap","篮球"]
}
 由于幂等性,第二次请求和第一次请求结果除了id基本一样
(2)创建自定义id的文档
PUT http://localhost:9200/user/_doc/1001
POST http://localhost:9200/user/_doc/1001
PUT http://localhost:9200/user/_create/1003
POST http://localhost:9200/user/_create/1003
{
"username":"小缸",
"password":"123456",
"hobby":["黑暗料理","骑摩托","爱缸婆"]
}

(3)查看文档
GET http://localhost:9200/user/_doc/1004

(4)查看某索引所有文档
GET http://localhost:9200/user/_doc/_search

(5)全量数据更新
PUT http://localhost:9200/user/_doc/1001
 版本也变化了
(6)局部数据更新
POST http://localhost:9200/user/_update/1001
{
"doc":{
"hobby":["黑暗料理","骑摩托","还是爱缸婆的!"],
"friend":["阿灿","老胡","静静"]
}
}
body里面doc里加入修改的属性。  
(7)删除文档
delete ip:端口号/索引名称/_doc/id内容 再次点not found
DELETE http://localhost:9200/user/_doc/1001
 
|