一、索引
1.创建索引
创建索引的请求格式:
-
请求方式:PUT
-
请求路径:/索引库名
e.g: 192.168.142.128:9200/youshop
-
请求参数:json格式:
{ "settings": { "number_of_shards": 1, # 分片数量 "number_of_replicas": 0 # 副本数量 } }
2.查看索引
GET /索引名
3.删除索引
DELETE /索引名
二、映射
什么是映射?
映射是定义文档的过程,文档包含哪些字段,字段是否store, 是否index, 是什么类型的数据, 是否分词等信息
操作映射前,我们需先了解ES中常见的数据类型。
我们说几个关键的:
-
String类型,又分两种:
- text:可分词,不可参与聚合
- keyword:不可分词,数据会作为完整字段进行匹配,可以参与聚合
-
Numerical:数值类型,分两类
- 基本数据类型:long、interger、short、byte、double、float、half_float
- 浮点数的高精度类型:scaled_float
- 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
-
Date:日期类型
elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。
1.创建映射
PUT /索引库名/_mapping/类型名称
{
"properties": {
"字段名": {
"type": "类型",
"index": true,
"store": true,
"analyzer": "分词器"
}
}
}
- 类型名称:就是前面将的type的概念,类似于数据库中的不同表(在ES7之后已删除)
字段名:任意填写 ,可以指定许多属性,例如: - type:类型,可以是text、long、short、date、integer、object等
- index:是否索引,默认为true。是否可用于检索
- store:是否存储,默认为false
- analyzer:分词器,这里的
ik_max_word
即使用ik分词器
2.新增数据
2.1 随机生成id
通过POST请求,可以向一个存在的索引库中添加数据。
在添加数据时,如果不指定id,则会使用随机生成的id
POST /索引库名/类型名
{
"title": "小米手机",
"images": "http://image.youshop.com",
"price": 2699.00
}
2.2 指定id
如果想要自己新增的时候指定id,可以在请求路径后面拼接上id。如果id不存在,则新增,如果id存在,则修改数据
POST /索引库名/类型/id值
{
"title": "iphone xs max",
"price": 8848.00,
"images": "www.iphone.com",
"saleable": true # 我们在新建映射时,并未指定该字段。ES会根据输入的数据来判断类型,动态添加到数据映射关系中。
}
3. 修改数据
把刚才新增的请求方式改为PUT,就是修改了。不过修改必须指定id。
其实post和put请求都可以修改数据,但PUT必须指定id
---- | 指定id | 不指定id |
---|---|---|
PUT | 有则修改,无则新增 | 报错 |
POST | 有则修改,无则新增 | 新增,使用随机id |
何为幂等性?
无论操作多少次,其结果都是与第一次的操作是一样的。
PUT和DELETE一样,都是幂等性的。是操作在具体的文件之上的。而POST是非幂等性的,操作在文件集合之上的。
4.删除数据
DELETE /索引库名/类型名/id值
三、总结
本文章介绍了ElasticSearch的基本使用,从如何创建一个索引,到新建映射,再到对索引库下的类型中的文档的增删改其实都是非常容易的,ES中最难的部分就是DSL查询语句了,将在下一篇文章中进行学习。