- A+
创建索引
现在,我们创建个名为“customer”的索引,其命令为:
curl -XPUT 'localhost:9200/customer?pretty&pretty'
添加完成后,我们查看一下状态,其命令为:
curl -XGET 'localhost:9200/_cat/indices?v&pretty'
得到的response接口如下:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open customer 95SQ4TSUT7mWBT7VNHH67A 5 1 0 0 260b 260b
第二条命令的结果告诉我们,现在有一个名为customer的索引,它有5个分片和一个副本,其中包含0个文档。
您可能还会注意到,customer索引的健康状态标识为黄色,https://it.baiked.com/elasticsearch/172.html这篇文章我们当时说过状态为绿色的才正常,那么这个为什么是黄色的呢,之所以出现这种情况,这个指标是因为默认情况下创建该索引Elasticsearch的副本。由于我们目前只有一个节点运行,所以在另一个节点加入集群时,还不能分配一个副本(用于高可用性),直到稍后的时间点。一旦该副本被分配到第二个节点,该索引的健康状态将变成绿色。
添加信息
给customer添加个用户信息,其命令如下:
curl -XPUT 'localhost:9200/customer/doc/1?pretty&pretty' -H 'Content-Type: application/json' -d' { "name": "John Doe" } '
响应值为:
{ "_index" : "customer", "_type" : "doc", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
从上面,我们看到在customer索引中类型为文档下成功创建了个客户。客户的内部id为1。
现在,让我们根据id查看一下刚才创建的客户信息,命令如下:
curl -XGET 'localhost:9200/customer/doc/1?pretty&pretty'
响应值为:
{ "_index" : "customer", "_type" : "doc", "_id" : "1", "_version" : 1, "found" : true, "_source" : { "name": "John Doe" } }
这里我们可以看出,通过id和另一个字段,我们就可以获取到一个完整的json文档。
删除索引
现在,我们删除一下刚才创建的索引,命令如下:
curl -XDELETE 'localhost:9200/customer?pretty&pretty'
响应值为:
{ "acknowledged" : true }
表明已经删除成功
现在我们再查下索引信息,命令如下:
curl -XGET 'localhost:9200/_cat/indices?v&pretty'
响应值为:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
我们的群集没有任何内容。
覆盖索引
之前我们说过创建索引的命令,那么同样的创建的命令执行两次会是神马情况呢
我们执行两次创建命令如下:
curl -XPUT 'localhost:9200/customer/doc/1?pretty&pretty' -H 'Content-Type: application/json' -d' { "name": "John Doe" } '
第一次结果如下:
{ "_index" : "customer", "_type" : "doc", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
第二次结果如下:
{ "_index" : "customer", "_type" : "doc", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }
通过上述我们可以看出,同样的创建命令执行多次,elasticsearch将覆盖上一次的结果
如果我们创建时,不指定id的话,则系统会给随机分配一个id,如下:
curl -XPOST 'localhost:9200/customer/doc?pretty&pretty' -H 'Content-Type: application/json' -d' { "name": "Jane Doe" } ' { "_index" : "customer", "_type" : "doc", "_id" : "8OUpmGABmwWPaziMpLuA", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
更新索引
现在,我们执行以下更新命令看看,如下:
curl -XPOST 'localhost:9200/customer/doc/1/_update?pretty&pretty' -H 'Content-Type: application/json' -d' { "doc": { "name": "Jane Doe" } } '
返回值跟重复提交的效果一样
我们再执行一条更新命令看看,如下:
curl -XPOST 'localhost:9200/customer/doc/1/_update?pretty&pretty' -H 'Content-Type: application/json' -d' { "doc": { "name": "Jane Doe", "age": 20 } } '
这次update后,该用户的姓名录入进去了
我们再更改以下年龄大小的命令看看,如下:
curl -XPOST 'localhost:9200/customer/doc/1/_update?pretty&pretty' -H 'Content-Type: application/json' -d' { "script" : "ctx._source.age += 5" } '
这次我们发现引入了个ctx._source,ctx._source表示更新源文件
- 安卓客户端下载
- 微信扫一扫
- 微信公众号
- 微信公众号扫一扫