ElasticSearch的Index和Document基本操作

这篇文章是Elasticsearch基本概念与安装的内容继续。
主要是Index和Document的CRUD操作,建议大家先去找下REST的相关内容阅读下,看下面的内容会更加轻松。

Index的操作

上篇文章对于基本概念我已经解释过了,这里再重复下,向ES添加数据的过程称为Index。当我们把数据输入ES时,数据就会被放到Lucene索引中。因为ES使用Lucene索引来存储和检索数据。当然我们不需要知道其中内部Lucene怎么运作的,但是它会帮助你了解ES的工作原理。
前面也提到过了ES的操作都是REST API。
使用PUT请求新建Index
PUT:

PUT http://localhost:9200/goods

当操作成功后会返回

{
  "acknowledged":true,
  "shards_acknowledged":true
}

相对应的,我们可以使用DELETE删除Index:

DELETE http://localhost:9200/goods

Document的操作

当Index创建完毕后就可以向里面添加Document了,这次我们使用POST做一次批量的演示:

POST http://localhost:9200/goods/_bulk

//POST数据
{
   "index":{
      "_index":"goods", "_type":"goods", "_id":"1"
   }
}
{
   "name":"XIAOMI 8", "description":"the newest XIAOMI Production", "price":"1998",
   "sku":"50", "status":"1", "catgory":["Digital", "phone"], "ranking":"3"
}
{
   "index":{
      "_index":"goods", "_type":"goods", "_id":"2"
   }
}
{
   "name":"Mate 9 Pro", "description":"the newest HUAWEI Production", "price":"1888",
   "sku":"30", "status":"1", "catgory":["Digital", "phone"], "ranking":"2"
}

成功后ES会返回:

{
   "took":154, "errors":false,"items":[
      {
         "index":{
            "_index":"goods", "_type":"goods", "_id":"1", "_version":1, "_shards":{
               "total":2, "successful":1, "failed":0
            }, "status":201
         }
      },
      {
         "index":{
            "_index":"goods", "_type":"goods", "_id":"2", "_version":1, "_shards":{
               "total":2, "successful":1, "failed":0
            }, "status":201
         }
      }
   ]
}

注意,这里的_type就是之前文章中介绍的Type类型,用来对Document定义组别的。
这时候在商品Index里我们就有数据了,就可以进行查询的操作了,当我们想要查看某个Documnet的时候,可以GET,比如想要获取ID为1的数据:

GET http://localhost:9200/goods/goods/1

GET的路由规则是按照/Index/Type/ID来执行的。当执行成功后就会返回数据:

{
  "_index" : "goods",
  "_type" : "goods",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : {
    ...
    ...
    ...
  }
}

如果没有找到,则返回的found字段是false。
同样的也有删除,也是使用DELETE:

DELETE http://localhost:9200/goods/goods/1

最后再讲下更新使用PUT请求:

PUT http://localhost:9200/goods/goods/1
{
    "price":"3888"
}'

需求修改哪个字段就填入该字段。

这次的内容到这里就结束了,下篇文章就要进入重点了:ES的查询功能。

版权所属,如需转载,请注明出处:搜闲鱼

916 次浏览

发表评论

电子邮件地址不会被公开。 必填项已用*标注