Elasticsearch增 删 改 查操作深入详解

                       

引言:

对于刚接触ES的童鞋,经常搞不明白ES的各个概念的含义。尤其对“索引”二字更是与关系型数据库混淆的不行。本文通过对比关系型数据库,将ES中常见的增、删、改、查操作进行图文呈现。能加深你对ES的理解。同时,也列举了kibana下的图形化展示。

ES Restful API GET、POST、PUT、DELETE、HEAD含义:
1)GET:获取请求对象的当前状态。
2)POST:改变对象的当前状态。
3)PUT:创建一个对象。
4)DELETE:销毁对象。
5)HEAD:请求获取对象的基础信息。

Mysql与Elasticsearch核心概念对比示意图
这里写图片描述
以上表为依据,
ES中的新建文档(在Index/type下)相当于Mysql中(在某Database的Table)下插入一行数据。

1、新建文档(类似mysql insert插入操作)

http://localhost:9200/blog/ariticle/1 put{"title":"New version of Elasticsearch released!","content":"Version 1.0 released today!","tags":["announce","elasticsearch","release"]}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

创建成功如下显示:

{- "_index": "blog",- "_type": "ariticle",- "_id": "1 -d",- "_version": 1,- "_shards": {    - "total": 2,    - "successful": 1,    - "failed": 0- },- "created": true}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这里写图片描述

2、检索文档(类似mysql search 搜索select*操作)

http://localhost:9200/blog/ariticle/1/  GET

检索结果如下:

{- "_index": "blog",- "_type": "ariticle",- "_id": "1",- "_version": 1,- "found": true,- "_source": {    - "title": "New version of Elasticsearch released!",    - "content": "Version 1.0 released today!",    - "tags": [        - "announce"        - ,        - "elasticsearch"        - ,        - "release"    - ]- }}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

如果未找到会提示:

{- "_index": "blog",- "_type": "ariticle",- "_id": "11",- "found": false}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

查询全部文档如下:
这里写图片描述
具体某个细节内容检索,
查询举例1:查询cotent列包含版本为1.0的信息。
http://localhost:9200/blog/
_search?pretty&q=content:1.0

{- "took": 2,- "timed_out": false,- "_shards": {    - "total": 5,    - "successful": 5,    - "failed": 0- },- "hits": {    - "total": 1,    - "max_score": 0.8784157,    - "hits": [        - {            - "_index": "blog",            - "_type": "ariticle",            - "_id": "6",            - "_score": 0.8784157,            - "_source": {                - "title": "deep Elasticsearch!",                - "content": "Version 1.0!",                - "tags": [                    - "deep"                    - ,                    - "elasticsearch"                - ]            - }        - }    - ]- }}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

查询举例2:查询书名title中包含“enhance”字段的数据信息:
[root@5b9dbaaa1a ~]# curl -XGET 10.200.1.121:9200/blog/ariticle/_search?pretty -d ‘

> { "query" : {> "term" :> {"title" : "enhance" }> }> }'{  "took" : 189"timed_out" : false"_shards" : {  "total" : 5"successful" : 5"failed" : 0  },  "hits" : {  "total" : 2"max_score" : 0.8784157"hits" : [ {  "_index" : "blog""_type" : "ariticle""_id" : "4""_score" : 0.8784157"_source" : {  "title" : "enhance Elasticsearch!""content" : "Version 4.0!""tags" : [ "enhance", "elasticsearch" ]  }  }, {  "_index" : "blog""_type" : "ariticle""_id" : "5""_score" : 0.15342641"_source" : {  "title" : "enhance Elasticsearch for university!""content" : "Version 5.0!""tags" : [ "enhance", "elasticsearch" ]  }  } ]  }}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

查询举例3:查询ID值为3,5,7的数据信息:
[root@5b9dbaaa148a ~]# curl -XGET 10.200.1.121:9200/blog/ariticle/_search?pretty -d ‘

{ "query" : {"terms" :{"_id" : [ "3", "5", "7" ] }}}'{  "took" : 5,  "timed_out" : false,  "_shards" : {  "total" : 5,  "successful" : 5,  "failed" : 0  },  "hits" : {  "total" : 3,  "max_score" : 0.19245009,  "hits" : [ {  "_index" : "blog",  "_type" : "ariticle",  "_id" : "5",  "_score" : 0.19245009,  "_source" : {  "title" : "enhance Elasticsearch for university!",  "content" : "Version 5.0!",  "tags" : [ "enhance", "elasticsearch" ]  }  }, {  "_index" : "blog",  "_type" : "ariticle",  "_id" : "7",  "_score" : 0.19245009,  "_source" : {  "title" : "deep Elasticsearch for university!",  "content" : "Version 2.0!",  "tags" : [ "deep", "elasticsearch", "university" ]  }  }, {  "_index" : "blog",  "_type" : "ariticle",  "_id" : "3",  "_score" : 0.19245009,  "_source" : {  "title" : "init Elasticsearch for university!",  "content" : "Version 3.0!",  "tags" : [ "initialize", "elasticsearch" ]  }  } ]  }}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

3、更新文档(类似mysql update操作)

http://localhost:9200/blog/ariticle/1/_update/  POST
{“script”:”ctx._source.content = \”new version 2.0 20160714\”“}

更新后结果显示:
{

  • “_index”: “blog”,
  • “_type”: “ariticle”,
  • “_id”: “1”,
  • “_version”: 2,
  • “_shards”: {
    • ”total”: 2,
    • “successful”: 1,
    • “failed”: 0
  • }

}

查询&验证更新后结果:(对比可知,版本号已经更新完毕)
http://localhost:9200/blog/ariticle/1/

{- "_index": "blog",- "_type": "ariticle",- "_id": "1",- "_version": 2,- "found": true,- "_source": {    - "title": "New version of Elasticsearch released!",    - "content": "new version 2.0 20160714",    - "tags": [        - "announce"        - ,        - "elasticsearch"        - ,        - "release"    - ]- }}`![这里写图片描述](https://img-blog.csdn.net/20160717132407353)``注意更新文档需要在elasticsearch_win\config\elasticsearch.yml下新增以下内容:
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

script.groovy.sandbox.enabled: true
script.engine.groovy.inline.search: on
script.engine.groovy.inline.update: on
script.inline: on
script.indexed: on
script.engine.groovy.inline.aggs: on
index.mapper.dynamic: true

4、删除文档(类似mysql delete操作)

http://localhost:9200/blog/ariticle/8/回结果

{- "found": true,- "_index": "blog",- "_type": "ariticle",- "_id": "8",- "_version": 2,- "_shards": {    - "total": 2,    - "successful": 1,    - "failed": 0- }}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这里写图片描述

5、Kibana可视化分析

5.1、在索引blog上查询包含”university”字段的信息。

这里写图片描述

5.2、Kibana多维度分析

这里写图片描述

——————————————————————————————————

更多ES相关实战干货经验分享,请扫描下方【铭毅天下】微信公众号二维码关注。
(每周至少更新一篇!)

这里写图片描述
和你一起,死磕Elasticsearch
——————————————————————————————————

2016年7月17日 13:31思于家中床前

作者:铭毅天下 
转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/51931981 
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值