Elasticsearch增、删、改、查操作深入详解

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核心概念对比示意图

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

Elasticsearch增、删、改、查操作深入详解

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

查询全部文档如下:

Elasticsearch增、删、改、查操作深入详解

具体某个细节内容检索,

查询举例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"”}


更新后结果显示:

{undefined


“_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

Elasticsearch增、删、改、查操作深入详解

5、Kibana可视化分析

##5.1、在索引blog上查询包含"university"字段的信息。Elasticsearch增、删、改、查操作深入详解

##5.2、Kibana多维度分析Elasticsearch增、删、改、查操作深入详解

上一篇:deepin更改为阿里镜像源


下一篇:学习设计模式之单例模式