Elasticsearch基本操作---自学笔记(待更新)

目录

 

一、增删改查

二、文档的版本控制

三、mapping


一、增删改查

  • 查询所有
GET _search{“query”:{“match_all”:{}}}
  • 添加索引-自定义id
PUT /lib/
{
  "settings": {
    "index":{
       "number_of_shards": 5,
       "number_of_replicas": 1
    }
  }
}
  •  添加索引-默认设置
PUT lib1
  • 查看设置
GET /lib/_settings
GET /lib1/_settings
GET _all/_settings

 

  •  添加文档-指定id
PUT /lib/user/1
{
  "name":"Smith",
  "age":6,
  "about":"I'm a student",
  "interests":["football","music"]
}
  • 添加文档-默认id 
POST /lib/user/
{
  "name":"John",
  "age":12,
  "about":"I'm a teacher",
  "interests":["study","piano"]
}
  •  查:GET /index/type/id
GET /lib/user/1

 

  • 查:返回指定字段:_source
GET /lib/user/1?_source=age,about
  • 改:PUT /index/type/id
PUT /lib/user/1
{
  "name":"Smith",
  "age":16,
  "about":"I'm a student",
  "interests":["football","music"]
}

 

  • 改:PUT /index/type/id/_update
POST /lib/user/1/_update
{
  "doc": {
    "age":18
  }
}

 

  • 删除文档
DELETE /lib/user/1
  • 删除索引
DELETE lib1
  • 批量获取:Multi Get
GET /_mget
{
  "docs":[
    {
      "_index":"lib",
      "_type":"user",
      "_id":1
    },
    {
      "_index":"lib",
      "_type":"user",
      "_id":2
    }
    ]
}
  • 批量查询,返回特定字段
GET /_mget
{
  "docs":[
    {
      "_index":"lib",
      "_type":"user",
      "_id":1,
      "_source":"name"
    },
    {
      "_index":"lib",
      "_type":"user",
      "_id":2,
      "_source":["name","age"]
    }
    ]
}
  • 简化写法
GET /lib/user/_mget
{
   "docs":[
      {
        "_id":1
      },
      {
         "_id":2
      }
   ]
}


GET /lib/user/_mget
{
  "ids":["1","2"]
}
  • 批量操作:Bulk API

   格式:{"action":{metadata}} \n {requestbody} \n-换行

      action:[{"delete":"删除一个文档"},{"create":"文档不存在时创建"},

                  {"index":"创建新文档或替换已有文档"},{"update":"修改文档"}]

      metadata:{"_index":"","_type":"","_id":""}

   例:{"delete":{"_index":"lib","_type":"user","_id":"1"}}

POST /lib/user/_bulk
{"index":{"-id":"1"}}
{"name":"Jane","age":12,"about":"I'm a student","interests":["football","music"]}
{"index":{"-id":"1"}}
{"name":"Marry","age":16,"about":"I'm a dancer","interests":["dance","music"]}
#操作完成,返回:"errors":false---成功

   注意:bulk会把将要处理的数据载入到内存中,所以数据量是有限制的,最佳的数据量不是一个确定的值。它取决于你的硬件、文档大小及复杂性、索引、搜索的负载。

一般建议是:1000-5000个文档,大小建议是5-15MB。

可以在es的配置文件中:elasticsearch-6.5.0/config/elasticsearch.yml中进行配置。

二、文档的版本控制

es采用了了乐观锁来保证数据的一致性,也就是说,当用户对文档进行操作时,并不需要对该文档做加锁和解锁的操作,只需要指定要操作的版本即可,当版本号一致时,es会允许操作顺利进行,反之会提示冲突并抛出异常-VersionConflictEngineException

版本号范围:1~2^63-1

内部版本控制:_version,检查_version与请求中指定的是否相同,如果不同则该请求不会顺利进行。_version=3,请求的也是3,成功执行。

外部版本控制:检查当前_version是否小于指定的数值,请求成功,那么外部的版本号就会被存储到文档的_version中。

version_type=external:保持_version与外部版本控制的数据一致。(如oracle用时间戳当做版本)。_version=3,请求的也是4,成功执行,并将_version的值改为请求中的version的值。

PUT /lib/user/4?version=5&version_type=external{
    "name":"Marry",
    "age":16,
    "about":"I'm a dancer",
    "interests":["dance","music"]
}
             _version

 

三、mapping

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值