Appearance
和学习MySQL一样,学习MySQL我们需要理解库、表、字段等概念。那么学习ElasticSearch,我们也需要先学习其核心概念才能理解如何使用,主要有三个概念,如下所示:
索引 Index
一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个商品数据的索引,一个订单数据的索引,还有一个用户数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。
映射 Mapping
映射是定义一个文档和它所包含的字段如何被存储和索引的过程。在默认配置下,ES可以根据插入的数据自动地创建mapping,也可以手动创建mapping。 mapping中主要包括字段名、字段类型等
文档 Document
文档是索引中存储的一条条数据。一条文档是一个可被索引的最小单元。ES中的文档采用了轻量级的JSON格式数据来表示。
索引的基本操作
索引只能被删除不能被修改,所以索引的操作包含增删查,不包含修改索引操作。首先我们需要打开输入命令的控制台。
shell
# 创建索引
PUT /products
PUT /orders
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
}
}
# 查看ES中的索引
GET /_cat/indices?v
# 删除索引
DELETE /products
添加索引
顶部会有警告信息,我们不用管
查询索引
TIP
health:代表健康状态,图中有详细说明,red才是不能使用的,yellow和green都是可以正常使用的。
index开头是"."代表系统索引,剩下的才是我们创建的
pri代表主数据块,rep代表备用数据块,当主数据和备用数据都在同一台机器上,不能满足高可用,所以才提示yellow
接下来我们指定主数据块为1,备用数据块为0,发现已经health变成green了
删除索引
映射的基本操作
我们再创建索引的时候,一般会将映射一同创建,索引与映射一般是不分家的。
创建索引并指定映射
- 字符串类型: keyword关键字、关键词,而text一般是一段文本
- 数字类型:integer long
- 小数类型:float double
- 布尔类型:boolean
- 日期类型:date
json
PUT /products
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"properties": {
"title":{
"type": "keyword"
},
"price":{
"type": "double"
},
"created_at":{
"type": "date"
},
"description":{
"type": "text"
}
}
}
}
查看某个索引的映射信息
shell
GET /products/_mapping
TIP
映射无法修改或删除,查看products索引的映射信息,返回数据如下:
json
{
"products" : {
"mappings" : {
"properties" : {
"created_at" : {
"type" : "date"
},
"description" : {
"type" : "text"
},
"price" : {
"type" : "double"
},
"title" : {
"type" : "keyword"
}
}
}
}
}