ElasticSearch常用操作:文档篇

  (TOC)

  <人力资源/>   

1新建文档

  

1.1指定id

  
 <代码>把my_blog/文章/1
  {
  “id”: 1、
  “标题”:“elasticsearch”,
  “posttime”:“2017-05-01”,
  “内容”:“elasticsearch经验!”
  } 
  

返回:   

 <代码> {
  :“_index my_blog”,
  “_type”:“文章”,
  “_id”:“1”,
  “_version”: 1、
  “结果”:“创造”,
  " _shards ": {
  “总”:2
  “成功”:1、
  “失败”:0
  },
  “创建”:真的
  } 
  
  

版本号会随着文档的更新自动递增。

     

1.2不指定id

  

不指定id、es会自动生成,但是这时只能使用:

  
 <代码> POST my_blog/文章
  {
  “id”: 2
  “标题”:“火花”,
  “posttime”:“2017-05-01”,
  “内容”:“火花是经验!”
  } 
  

返回:   

 <代码> {
  :“_index my_blog”,
  “_type”:“文章”,
  :“_id AWagTCv8O1qbT1zqbREV”,
  “_version”: 1、
  “结果”:“创造”,
  " _shards ": {
  “总”:2
  “成功”:1、
  “失败”:0
  },
  “创建”:真的
  } 
  

2获取文档

  

2.1普通获取

  

获取存在的文档:

  
 <代码>得到my_blog//1条 
  

返回:   

 <代码> {
  :“_index my_blog”,
  “_type”:“文章”,
  “_id”:“1”,
  “_version”: 1、
  “发现”:没错,
  " _source ": {
  “id”:1、
  “标题”:“elasticsearch”,
  “posttime”:“2017-05-01”,
  “内容”:“elasticsearch经验!”
  }
  } 
  

获取不存在的文档:

  
 <代码>得到my_blog//2条 
  

返回:   

 <代码> {
  :“_index my_blog”,
  “_type”:“文章”,
  “_id”:“2”,
  “发现”:假的
  } 
  

2.2测试文档是否存在

  

使用头可以测试文档是否存在:

  
 <代码>头my_blog/文章/1
  200年好
  
  头my_blog/文章/2
  404 -未找到 
  

2.3批量获取

  

不同指数不同类型:

  
 <代码> _mget
  {
  “医生”:[
  {
  :“_index my_blog”,
  “_type”:“文章”,
  “_id”: 1
  },
  {
  “_index”:“twitter”,
  “_type”:“推特”,
  “_id”: 2
  }
  ]
  } 
  

同一指数下不同类型:

  
 <代码>得到my_blog/_mget
  {
  “医生”:[
  {
  “_type”:“文章”,
  “_id”: 1
  },
  {
  “_type”:“文章”,
  “_id”: 2
  }
  ]
  } 
  

同一指数同一类型:

  
 <代码>得到my_blog/文章/_mget
  {
  “医生”:[
  {" _id ": 1},
  {" _id ": 2}
  ]
  } 
  

或:   

 <代码>得到my_blog/文章/_mget
  {
  “id”(1、2):
  } 
  

3更新文档

  

es更新文档的原理为:先找到这个文档,删除旧的文档内容执行更新,更新完后再索引最新的文档。

  

先添加下面一份文档:

  
 <代码>测试/type1/1
  {
  “计数器”:1、
  “标签”(“红”):
  } 
  

3.1更新文档字段内容

  

给计数器的值增加4:

  
 <代码>测试/type1/1/_update
  {
  "脚本":{
  “内联”:“ctx._source。计数器+=params.count”,
  “朗”:“无痛”,
  " params ": {
  “数”:4
  }
  }
  } 
  
  

注一:命令中内联是执行的脚本,ctx是脚本语言中的一个执行对象,无痛是es内置的一种脚本语言,参数是参数集合。

  

注2:ctx对象除了可以访问<代码> _source 之外,还可以访问<代码> _index ,<代码> _type ,<代码> _id ,<代码> _version ,<代码> _routing ,<代码> _parent>      

对标签字段增加一个值:

  
 <代码>测试/type1/1/_update
  {
  "脚本":{
  “内联”:“ctx._source.tags.add (params.tag)”,
  “朗”:“无痛”,
  " params ": {
  “标签”:“蓝色”
  }
  }
  } 
  

3.2新增与移除字段

ElasticSearch常用操作:文档篇