ElasticSearch学习2《es结构、es的restful语法、索引的操作、文档的增删改操作》

女爷i 2022-12-22 09:28 192阅读 0赞

上一篇:ElasticSearch学习1《下载elasticsearch、kibana、IK分词器》

目录

  • 一、ES结构
    • 1、索引index
    • 2、类型type
    • 3、文档document
    • 4、属性field
  • 二、操作ES的restful语法
    • 1、GET请求:
    • 2、POST请求:
    • 3、PUT请求:
    • 4、DELETE 请求:
  • 三、索引的操作
    • 1、创建一个索引
    • 2、查看一个索引
    • 3、删除 索引
    • 4、ES中Field可以指定的类型
    • 5、创建索引并指定数据结构
  • 四、文档操作
    • 1、新建文档
    • 2、修改文档
    • 3、删除文档

一、ES结构

1、索引index

ES服务中会创建多个索引
每个缩影默认被分成5个分片
每个分片存在至少一个备份分片
备份分片 不会帮助检索数据(当ES检索压力特别大的时候才,备份分片才会帮助检索数据)
备份的分片必须放在不同的服务器中

在这里插入图片描述

2、类型type

一个索引下可以创建多个类型
PS:版本不同,类型的创建也不同

在这里插入图片描述

3、文档document

一个类型下可以有多个文档,这个文档就相当于mysql表中的多行数据

在这里插入图片描述

4、属性field

一个文档中可以包含多个属性,类似于mysql 表中的一行数据有多个列

在这里插入图片描述

二、操作ES的restful语法

1、GET请求:

http://ip:port/index :查询索引信息
http://ip:port/index/type/doc\_id :查询指定的文档信息

2、POST请求:

http://ip:port/index/type/\_search: 查询文档,可以在请求体中添加json字符串来代表查询条件
http://ip:port/index/type/doc\_id/\_update: 修改文档,在请求体中添加json字符串来代表修改的信息

3、PUT请求:

http://ip:port/index: 创建一个索引,需要在请求体中指定索引的信息
http://ip:port/index/type/\_mappings: 代表创建索引时,指定索引文档存储属性的信息

4、DELETE 请求:

http://ip:port/index: 删除跑路
http://ip:port/index/type/doc\_id: 删除指定的文档

三、索引的操作

1、创建一个索引

#number_of_shards 分片
#number_of_replicas 备份

  1. PUT /person
  2. {
  3. "settings": {
  4. "number_of_shards": 5,
  5. "number_of_replicas": 1
  6. }
  7. }

2、查看一个索引

  1. GET /person

3、删除 索引

  1. DELETE /person

4、ES中Field可以指定的类型

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping-types.html

  1. 字符串类型:
  2. text: 一般用于全文检索,将当前field 进行分词
  3. keyword:当前field 不会进行分词
  4. 数值类型:
  5. long:
  6. Intger:
  7. short:
  8. byte:
  9. double:
  10. float:
  11. half_float: 精度比float 小一半
  12. scaled_float:根据一个long scaled 来表达一个浮点型 long-345, -scaled 100 ->3.45
  13. 时间类型:
  14. date类型,根据时间类型指定具体的格式
  15. PUT my_index
  16. {
  17. "mappings": {
  18. "_doc": {
  19. "properties": {
  20. "date": {
  21. "type": "date",
  22. "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
  23. }
  24. }
  25. }
  26. }
  27. }
  28. 布尔类型:
  29. boolean 类型,表达true false
  30. 二进制类型:
  31. binary类型暂时支持Base64编码的字符串
  32. 范围类型:
  33. integer_range
  34. float_range
  35. long_range:赋值时,无需指定具体的内容,只需存储一个范围即可,gte,lte,gt,lt,
  36. double_range
  37. date_range
  38. ip_range
  39. PUT range_index
  40. {
  41. "settings": {
  42. "number_of_shards": 2
  43. },
  44. "mappings": {
  45. "_doc": {
  46. "properties": {
  47. "expected_attendees": {
  48. "type": "integer_range"
  49. },
  50. "time_frame": {
  51. "type": "date_range",
  52. "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
  53. }
  54. }
  55. }
  56. }
  57. }
  58. PUT range_index/_doc/1?refresh
  59. {
  60. "expected_attendees" : {
  61. "gte" : 10,
  62. "lte" : 20
  63. },
  64. "time_frame" : {
  65. "gte" : "2015-10-31 12:00:00",
  66. "lte" : "2015-11-01"
  67. }
  68. }
  69. 经纬度类型:
  70. geo_point:用来存储经纬度
  71. IP类型:
  72. ip:可以存储IPV4 IPV6
  73. 其他的数据类型,参考官网

5、创建索引并指定数据结构

  1. #创建索引,指定数据类型
  2. PUT /book
  3. {
  4. "settings": {
  5. #分片数
  6. "number_of_shards": 5,
  7. #备份数
  8. "number_of_replicas": 1
  9. },
  10. #指定数据类型
  11. "mappings": {
  12. #类型 Type
  13. "novel":{
  14. #文档存储的field
  15. "properties":{
  16. #field属性名
  17. "name":{
  18. #类型
  19. "type":"text",
  20. #指定分词器
  21. "analyzer":"ik_max_word",
  22. #指定当前的field可以被作为查询的条件
  23. "index":true,
  24. #是否需要额外存储
  25. "store":false
  26. },
  27. "author":{
  28. "type":"keyword"
  29. },
  30. "count":{
  31. "type":"long"
  32. },
  33. "on-sale":{
  34. "type":"date",
  35. #指定时间类型的格式化方式
  36. "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
  37. },
  38. "descr":{
  39. "type":"text",
  40. "analyzer":"ik_max_word"
  41. }
  42. }
  43. }
  44. }
  45. }

四、文档操作

文档在ES服务中的唯一标识, _indx ,_type,_id 三个内容为组合,锁定一个文档,操作时添加还时修改操作,

1、新建文档

  1. 自动生成id
  2. #添加文档,自动生成id
  3. POST /book/novel
  4. {
  5. "name":"盘龙",
  6. "author":"我吃西红柿",
  7. "count":100000,
  8. "on-sale":"2001-01-01",
  9. "descr":"大小的血睛鬃毛狮,力大无穷的紫睛金毛猿,毁天灭地的九头蛇皇,携带着毁灭雷电的恐怖雷龙……这里无奇不有,这是一个广博的魔幻世界。强者可以站在黑色巨龙的头顶遨游天际,恐怖的魔法可以焚烧江河,可以毁灭城池,可以夷平山岳……"
  10. }
  11. #添加文档,手动指定id
  12. PUT /book/novel/1
  13. {
  14. "name":"红楼梦",
  15. "author":"曹雪芹",
  16. "count":10000000,
  17. "on-sale":"2501-01-01",
  18. "descr":"中国古代章回体长篇小说,中国古典四大名著之一,一般认为是清代作家曹雪芹所著。小说以贾、史、王、薛四大家族的兴衰为背景,以富贵公子贾宝玉为视角,以贾宝玉与林黛玉、薛宝钗的爱情婚姻悲剧为主线,描绘了一批举止见识出于须眉之上的闺阁佳人的人生百态,展现了真正的人性美和悲剧美"
  19. }

2、修改文档

  1. 1.覆盖式修改
  2. #添加文档,手动指定id
  3. PUT /book/novel/1
  4. {
  5. "name":"红楼梦",
  6. "author":"曹雪芹",
  7. "count":1000444,
  8. "on-sale":"2501-01-01",
  9. "descr":"中国古代章回体长篇小说,中国古典四大名著之一,一般认为是清代作家曹雪芹所著。小说以贾、史、王、薛四大家族的兴衰为背景,以富贵公子贾宝玉为视角,以贾宝玉与林黛玉、薛宝钗的爱情婚姻悲剧为主线,描绘了一批举止见识出于须眉之上的闺阁佳人的人生百态,展现了真正的人性美和悲剧美"
  10. }
  11. 2.使用doc修改方式
  12. #修改文档,使用doc 方式
  13. POST /book/novel/1/_update
  14. {
  15. "doc":{
  16. #指定需要修改的field和对应的值
  17. "count":566666
  18. }
  19. }

3、删除文档

  1. #根据id删除文档
  2. DELETE /book/novel/3mEnk3MBaSKoGN4T2olw

上一篇:ElasticSearch学习1《下载elasticsearch、kibana、IK分词器》

发表评论

表情:
评论列表 (有 0 条评论,192人围观)

还没有评论,来说两句吧...

相关阅读