Elasticsearch 2.20入门篇:基本操作

jqvj9967 9年前

来自: http://my.oschina.net/secisland/blog/613927


    前面我们已经安装了Elasticsearch ,下一步我们要对Elasticsearch进行一些基本的操作。基本的操作主要有,建索引库,插入数据,查询数据,修改数据,删除数据,删除索引库。

    备注:如果没有特殊说明,本文章及后面所有的文章都在2.20版本中进行验证,其他版本不能确定是否可用。

    由于官方文档都是使用curl来进行实例操作,不太直观,我更喜欢用图形化界面来进行验证。在本文及以后的例子中,我都是已RESTClient3.5来作为操作的工具。下载地址为http://code.fosshub.com/WizToolsorg-RESTClient/downloads,下载的文件是restclient-ui-3.5-jar-with-dependencies.jar。

程序运行: java -jar restclient-ui-3.5-jar-with-dependencies.jar

建索引库

执行PUT localhost:9200/customer?pretty

返回表示建库成功:

{    "acknowledged" : true  }

说明:http方法PUT,url为localhost:9200/customer?pretty

查询库

执行GET http://localhost:9200/_cat/indices?v

返回:

health status   index      pri  rep       docs.count docs.deleted store.size pri.store.size 

yellow open   customer   5   1          0                 0                   795b        795b 

表示已经建成了一个索引customer,主分片是5个,健康度是黄色,状态是活动,文档数为0。

插入数据

执行 PUT localhost:9200/customer/external/1?pretty

参数:{  "name": "John Doe" }

注意:Method选择PUT,Body要设置成application/x-www-form-urlencoded; charset=UTF-8

返回值为:

{    "_index" : "customer",    "_type" : "external",    "_id" : "1",    "_version" : 1,    "_shards" : {      "total" : 2,      "successful" : 1,      "failed" : 0    },    "created" : true  }

界面如下:

我们再次执行库查询,发现文档数是1:GET http://localhost:9200/_cat/indices?v  

health status  index      pri rep        docs.count docs.deleted store.size pri.store.size 

yellow open   customer   5   1          1            0      3.5kb          3.5kb 

查询数据

执行:GET http://localhost:9200/customer/external/1?pretty

返回:

{    "_index" : "customer",    "_type" : "external",    "_id" : "1",    "_version" : 1,    "found" : true,    "_source" : {      "name" : "John Doe"    }  }

可以看到_source的内容就是我们刚才插入的数据。

本文由赛克蓝德(secisland)原创,转载请标明作者和出处。

修改数据

执行:POST localhost:9200/customer/external/1/_update?pretty

参数:

{    "doc": { "name": "secisland Doe" }  }

返回结果:

{    "_index" : "customer",    "_type" : "external",    "_id" : "1",    "_version" : 2,    "_shards" : {      "total" : 2,      "successful" : 1,      "failed" : 0    }  }

表示执行成功。

然后我们在查询一下数据

GET http://localhost:9200/customer/external/1?pretty

{    "_index" : "customer",    "_type" : "external",    "_id" : "1",    "_version" : 2,    "found" : true,    "_source" : {      "name" : "secisland Doe"    }  }

可以看出文档的内容由John Doe修改成了secisland Doe。

删除文档

执行:DELETE localhost:9200/customer/external/1?pretty

返回:

{    "found" : true,    "_index" : "customer",    "_type" : "external",    "_id" : "1",    "_version" : 3,    "_shards" : {      "total" : 2,      "successful" : 1,      "failed" : 0    }  }

然后我们查询库的状态:

GET http://localhost:9200/_cat/indices?v

返回:

health status index    pri rep docs.count docs.deleted store.size pri.store.size 

yellow open   customer   5   1          0            0      3.6kb          3.6kb 

从中可以看出,数据库中已经没有记录了。

删除索引库

执行:DELETE localhost:9200/customer?pretty

返回:

{    "acknowledged" : true  }

表示删除成功

然后我们查询库的状态:

GET http://localhost:9200/_cat/indices?v

返回:

health status index pri rep docs.count docs.deleted store.size pri.store.size 

从中可以看出已经没有任何的库了。

赛克蓝德(secisland)后续会逐步对Elasticsearch的最新版本的各项功能进行分析,近请期待。