ElasticSearch系列二:ElasticSearch基本操作之索引文档的增删改

发布于:2022-12-04 ⋅ 阅读:(428) ⋅ 点赞:(0)

1. ElasticSearch数据管理

        ElasticSearch是面向文档的,所以操作ElasticSearch其实就是操作索引里面的文档,具体有索引、搜索、排序、过滤等。文档格式为json。

1.1. 索引的基本操作

        1.1.1 创建索引            

PUT /idx_db

        1.1.2 查询索引

 GET /idx_db

        1.1.3 删除索引

 DELETE /idx_db

 1.2 文档的基本操作

        1.2.1 添加文档      

格式: PUT /索引名称/类型/id 

PUT /es_db/_doc/1
{
"name": "张三",
"sex": 1,
"age": 25,
"address": "广州天河公园",
"remark": "java developer"
}

PUT /es_db/_doc/2
{
"name": "李四",
"sex": 1,
"age": 28,
"address": "广州荔湾大厦",
"remark": "java assistant"
}

        1.2.2 修改文档(和增加文档操作一样,存在对应的id就修改,不存在就添加) 

格式: PUT /索引名称/类型/id 
 
PUT /es_db/_doc/1
{
"name": "白起老师",
"sex": 1,
"age": 25,
"address": "张家界森林公园",
"remark": "php developer assistant"				
}

          1.2.3 查询文档

格式: GET /索引名称/类型/id

举例: GET /es_db/_doc/1

          1.2.4 删除文档

格式: DELETE /索引名称/类型/id

举例: DELETE /es_db/_doc/1

注意:POST和PUT都能起到创建/更新的作用

1、PUT 需要指定文档id 才能进行更新和创建操作,POST 如果没指定就是新增文档,文档id自动生成,如果有文档id就更新;

2、PUT与DELETE都是幂等性操作, 即不论操作多少次, 结果都一样,POST不是。

        1.2.5 批量查询文档

有两种方式,直接上代码

GET /product_db/_mget
{
  "docs": [
    {
      "_id": 1
    },
    {
      "_id": 2
    }
  ]
}


GET _mget
{
  "docs": [
    {
      "_index": "product_db",
      "_id": 1
    },
    {
      "_index": "product_db",
      "_id": 2
    }
  ]
}

         1.2.6 批量写文档(通过_bulk的API来实现)

                请求方式:POST

                请求地址:_bulk

                请求参数:通过_bulk操作文档,一般至少有两行参数(或偶数行参数)

                 第一行参数为指定操作的类型及操作的对象(index,type和id)

                 第二行参数才是操作的数据

             参数类似于:

                {"actionName":{"_index":"indexName", "_type":"typeName","_id":"id"}}

                {"field1":"value1", "field2":"value2"}

  • actionName:表示操作类型,主要有create,index,delete和update

        1)批量创建或全量替换文档,当对应的 index 和 _id 存在时则为替换,不存在时为创建

POST _bulk
{"create":{"_index":"article","_id":3}}
{"id":3,"title":"老师1","content":"老师666","tags":["java","面向对象"],"create_time":1554015482530}
{"create":{"_index":"article","_id":4}}
{"id":4,"title":"老师2","content":"老师NB","tags":["java","面向对象"],"create_time":1554015482530}

          2)批量修改update

POST _bulk
{"update":{"_index":"article","_id":3}}
{"doc":{"title":"ES大法必修内功"}}
{"update":{"_index":"article","_id":4}}
{"doc":{"create_time":1554018421008}}

        3)批量删除delete

POST _bulk
{"delete":{"_index":"article","_id":3}}
{"delete":{"_index":"article","_id":4}}

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到