Elasticsearch
文档,即索引库中的数据,会根据规则创建索引,将来用于搜索。可以类比做数据库中的一行数据
- 新增文档
新增文档时,涉及到id的创建方式,手动指定或者自动生成
POST /索引名称/_doc/{id}
POST /my-company-index/_doc/1
{
"name" : "百度",
"job" : "小度用户运营经理",
"payment" : "30000",
"logo" :
"http://www.lgstatic.com/thubnail_120x120/i/image/M00/21/3E/CgpFT1kVdzeAJNbUAABJB7x9sm8374.png"
}

- 新增文档(自动生成id)
POST /索引名称/_doc
{
“field”:“value”
}
POST /my-company-index/_doc
{
"name" : "百度",
"job" : "算法工程师",
"payment" : "50000",
"logo" :
"http://www.lgstatic.com/thubnail_120x120/i/image/M00/21/3E/CgpFT1kVdzeAJNbUAABJB7x9sm8374.png"
}

- 查看文档
可以看到结果显示为: created ,代表创建成功。
另外,需要注意的是,在响应结果中有个 _id 字段,这个就是这条文档数据的 唯一标识 ,以后的增删改查都依赖这个_id作为唯一标示,这里是Elasticsearch帮我们随机生成的id - 查看单个文档
GET /索引名称/_doc/{id}


- 查看所有文档
POST /索引名称/_search
{
“query”:{
“match_all”: {
}
}
}
POST /my-company-index/_search
{
"query": {
"match_all": {}
}
}
- _source定制返回结果
某些业务场景下,我们不需要搜索引擎返回source中的所有字段,可以使用source进行定制,如下,多
个字段之间使用逗号分隔
GET /my-company-index/_doc/1?_source=name,job

- 更新文档(全部更新)
把刚才新增的请求方式改为PUT,就是修改了,不过修改必须指定id
id对应文档存在,则修改
id对应文档不存在,则新增
比如,我们把使用id为3,不存在,则应该是新增
PUT /my-company-index/_doc/3
{
"name" : "百度",
"job" : "AI工程师",
"payment" : "60000",
"logo" :
"http://www.lgstatic.com/thubnail_120x120/i/image/M00/21/3E/CgpFT1kVdzeAJNbUAABJB7x9sm8374.png"
}
- 更新文档(局部更新)
Elasticsearch可以使用PUT或者POST对文档进行更新(全部更新),如果指定ID的文档已经存在,则执行
更新操作。
注意:Elasticsearch执行更新操作的时候,Elasticsearch首先将旧的文档标记为删除状态,然后添加新
的文档,旧的文档不会立即消失,但是你也无法访问,Elasticsearch会在你继续添加更多数据的时候在
后台清理已经标记为删除状态的文档。
全部更新,是直接把之前的老数据,标记为删除状态,然后,再添加一条更新的(使用PUT或者
POST)
局域更新,只是修改某个字段(使用POST)
POST /索引名/_update/{id}
{
"doc":{
"field":"value"
}
}
#全量
PUT /my-company-index/_doc/3
{
"job" : "AI工程师"
}
# 部分更新
POST /my-company-index/_update/3
{
"doc": {
"job": "AI"
}
}
删除
DELETE /索引名/_doc/{id}
DELETE /my-company-index/_doc/3
- 根据查询条件进行删除
POST /索引库名/_delete_by_query
{
"query": {
"match": {
"字段名": "搜索关键字"
}
}
}
POST /my-company-index/_delete_by_query
{
"query": {
"match": {
"字段名": "百度"
}
}
}
- 删除所有文档
POST 索引名/_delete_by_query
{
"query": {
"match_all": {}
}
}
文档的全量替换、强制创建
- 全量替换
语法与创建文档是一样的,如果文档id不存在,那么就是创建;如果文档id已经存在,那么就是全量替换操作,替换文档的json串内容;
文档是不可变的,如果要修改文档的内容,第一种方式就是全量替换,直接对文档重新建立索引,替换里面所有的内容,elasticsearch会将老的文档标记为deleted,然后新增我们给定的一个文档,当我们创建越来越多的文档的时候,elasticsearch会在适当的时机在后台自动删除标记为deleted的文档
- 强制创建
PUT /index/_doc/{id}?op_type=create {},PUT /index/_doc/{id}/_create {}
如果id 存在就会报错
258

被折叠的 条评论
为什么被折叠?



