引言:
对于刚接触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" - ]- }}```注意更新文档需要在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