β

ElasticSearch教程(4)——ElasticSearch基于REST的CRUD API

邓的博客 5298 阅读

本文讲述的是基于REST操作elasticsearch的基本api,如果使用java,请参考另一篇文章:ElasticSearch的java api基本操作入门指南

1. 什么是REST

在REST风格结构中,所有的请求都必须在一个由path指定的具体地址的对象上执行。例如,如果用/schools/代表一系列学校的话,/schools/1代码id为1的那所学校,需要注意的是,对象是可以嵌套的,例如可以用/schools/1/class/5代表id为1的学校中,班级id为5的那个班,依次类推。

REST的操作分为以下几种:

GET:获取对象的当前状态;

POST:改变对象的状态;

PUT:创建对象;

DELETE:删除对象;

HEAD:获取对象的基本信息。

2. ElasticSearch 的CRUD API

创建对象:

假设我们需要存储一系列文章,用JSON来表示,如下:

{
  "id": "1",
  "title": "First title",
  "content": "This my first article about elasticsearch!",
  "readNum": 0,
  "tags": ["first", "elasticsearch"]
}

 从上面我们可以看到,我们定义了text类型的title和content,number类型的readNum和一个strings数组tags。如果我们选择将这个对象放到索引wordpress下的article里,我们可以这么写:

curl -XPUT http://localhost:9200/wordpress/article/1 -d '{  "title": "First title",  "content": "This my first article about elasticsearch!",  "readNum": 0,  "tags": ["first", "elasticsearch"]}'

 请注意:我们将对象的id放到了url里面,对象里面并不会放id。如果全部正确,我们将会看到es返回的一个表示成功的JSON。

当然,我们也可以不指定对象的id,elasticsearch会自动为我们生成一个随机的id,注意,我们这里要使用POST,而不是PUT:

curl -XPOST http://localhost:9200/wordpress/article/1 -d '{  "title": "First title",  "content": "This my first article about elasticsearch!",  "readNum": 0,  "tags": ["first", "elasticsearch"]}'

获取对象

我们可以使用GET操作:

curl -XGET http://localhost:9200/wordpress/article/1

 我们可以看到elasticsearch会返回一个表示id为1的对象的相关信息,如果不存在,只会返回你请求的index,type和id,并且它的”exists” : false。

更新对象

curl -XPOST http://localhost:9200/wordpress/article/1/_update -d '{
  "script": "ctx._source.content = \"my new content for first article.\""
}'

这里我们使用了_source这个field,update操作实际上是比较复杂的,但是你不必将整个对象传进去,只需传需要更改的field的就行了,更多关于update的用法,将在后续提到,您也可以参考相关官方文档。

删除对象

删除操作使用的是DELETE,如下:

curl -XDELETE http://localhost:9200/wordpress/article/1

3. 总结

本文主要介绍了REST的几种操作的意义,并讲解了使用REST API完成elasticsearch的CRUD操作的方式。

非特别说明,均为原创文章,转载请注明: 转载自邓的博客

本文链接地址: ElasticSearch教程(4)——ElasticSearch基于REST的CRUD API

作者:邓的博客
关注Hadoop、NoSql和搜索相关开源技术

评论

  • 非常赞!博文很精彩!

    回复   |   布罗塔 发表于 2015-02-28 20:45:30

发表评论