Elasticsearch-04 ES中的术语和基本用法

举报
小工匠 发表于 2021/09/09 23:59:08 2021/09/09
【摘要】 文章目录 概述术语基本用法创建索引非结构化创建结构化创建 官方API文档插入指定文档id插入(PUT方法)指定生成文档id插入 (POST方法) 修改直接修改文档脚本修改文档 删...


在这里插入图片描述

概述

有时候对象不仅仅只是简单的键值列表, 更多时候它拥有复杂的数据结构, 比如包含日期、 地理位置、 另一个对象或者数组。

将这些数据保存到由行和列组成的关系数据库中, 就好像是把一个丰富的对象拆散了放入一个非常大的表格中:你不得不拆散对象以适应表模式(通常一列表示一个字段) , 然后又不得不在查询的时候重建它们。

Elasticsearch是面向文档(document oriented)的, 这意味着它可以存储整个对象或文档即document

然而它不仅仅是存储, 还会索引(index)每个文档的内容使之可以被搜索

在Elasticsearch中, 你可以对文档(而非成行成列的数据) 进行索引、 搜索、 排序、 过滤。这也是Elasticsearch能够执行复杂的全文搜索的原因之一

Elasticsearch使JSON 作为文档序列化格式。


术语

  • 索引:含有相同属性的文档集合 ,相当于关系型数据库中的database
  • 类型:索引可以定义一个或多个类型,文档必须属于一个类型,相当于table
  • 文档:文档是可以被索引的基本数据单位 ,相当于一条记录
Elasticsearch -> Indexes-> Types -> Documents -> Fields
Relational DB -> Databases -> Tables -> Rows -> Columns

  
 
  • 1
  • 2

和索引相关的有“分片”和“备份”

  • 分片:每个索引都有多个分片,每个分片是一个Lucene索引

假如一个索引数据量很大,就会产生硬盘压力很大。所以就要‘分片’来分担压力。可以水平的扩展和拆分以及分布式的操作,可以提高搜索和其他操作

  • 备份:拷贝一份分片就完成了分片的备份

当一个主分片失败或出现问题时,"备份分片"就可以代替工作,从而提高了ES的可用性,备份的分片还可以执行搜索的操作,来分摊搜索的压力。

  • ES创建索引时默认创建5个分片一个备份 , 分片的数量只能在创建索引时指定,备份可以动态修改

  • 索引命名规范:字母小写,且不含中划线


基本用法

使用RESTful API, 通过9200端口的与Elasticsearch进行通信

http://<ip>:<port>/<索引>/<类型>/<文档id> 

  
 
  • 1

HTTP方法:

 GET , POST , PUT , HEAD , DELETE

  
 
  • 1

创建索引

非结构化创建

在这里插入图片描述

在这里插入图片描述

粗线框代表主分片,对应的相同数字的细线框则代表备份,我们创建book索引的时候,默认5个分片(0,1,2,3,4) 以及一个备份 ,如上所示。

怎么确定是非结构化的呢?

在这里插入图片描述

结构化的关键词 mappings,为空说明为非结构化,并没有结构映射的信息。


结构化创建

{
  "novel": {
    "properties": {
      "title": {
        "type": "text"
      }
    }
  }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
点击Request,返回成功后,回到overview刷新下索引,查看索引信息如下
在这里插入图片描述

在web页面书写json没有提示,很容易出错,这里我们通过postman来新建一个索引吧

{
	"settings":{
		"number_of_shards":3,
		"number_of_replicas":1
	},
	
	"mappings":{
		"man":{
			"properties":{
				"name":{
					"type":"text"
				},
				"country":{
					"type":"keyword"
				},
				"age":{
					"type":"integer"
				},
				"date":{
					"type":"date",
					"format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis"
				}
			}
		},
		"woman":{
			
		}
	}
}


  
 
  • 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

时间格式 epoch_millis为时间戳格式

在这里插入图片描述
body为json格式, 请求方法为put , 请求url为 http://localhost:9200/people

返回结果:

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "people"
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

通过head插件查看结果,刷新下
在这里插入图片描述
查看索引信息如下
在这里插入图片描述


官方API文档

当前版本 7.0 : https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

5.6的版本的: https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html


插入

我们往 people 这个索引中的 man类型里写入一条数据即文档

指定文档id插入(PUT方法)

{
	"name":"artisan",
	"country":"china",
	"age":18,
	"date":"2019-04-19"
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
PUT 方法
http://localhost:9200/people/man/1 -->" ip:port/索引/类型/文档id

到head插件中查看下数据

在这里插入图片描述

id=1 ,是我们自己指定的

指定生成文档id插入 (POST方法)

在这里插入图片描述
POST 方法
RestFul 请求中仅指定 索引和类型即可,无需指定id,es自动生成id

在head插件中刷新下,通过Brower浏览数据如下
在这里插入图片描述


修改

直接修改文档

在这里插入图片描述

URL: http://localhost:9200/people/man/1/_update 指定id ,注意后面要跟上“_update”

方法: POST

修改内容

“doc”:{

   需要修改的信息

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

head插件查看修改后的数据
在这里插入图片描述


脚本修改文档

{
	"script":{
		"lang":"painless",
		"inline":"ctx._source.age += 10"
	}
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

在这里插入图片描述

或者,将参数放在外面指定,比如

{
	"script":{
		"lang":"painless",
		"inline":"ctx._source.age = params.age",
		"params":{
			"age":99
		}
	}
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述


删除

删除Document 文档

URL : http://localhost:9200/people/man/1/ ,删除id=1的文档

方法: DELETE

在这里插入图片描述

通过head插件查看,刚才id=1的数据已经被删掉了
在这里插入图片描述


删除 index 索引

方式一: web页面中删除

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

索引被删除后,索引中的数据将一并被删除 ,请谨慎操作。

方式二: 通过postman ,

在这里插入图片描述

方法: DELETE, url : http://ip:port/index

通过head插件查看

在这里插入图片描述


查询

另开篇介绍,见ElasticSearch-05ElasticSearch之查询与过滤


文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。

原文链接:artisan.blog.csdn.net/article/details/89396903

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。