1 索引操作
1.1 创建索引
Request:
PUT /{index_name}
{
# 配置副本和分片信息等
"settings": {
...
},
# 配置映射信息
"mappings": {
...
}
}
Request Sample:
PUT /user
{
# 设置用户索引的配置信息
"settings": {
# 设置分片副本数为2
"number_of_replicas": 2,
# 设置主分片数为10,默认为5
"number_of_shards": 10
},
# 设置用户索引的映射信息
"mappings": {
"properties": {
# 用户名,类型为text,支持全文检索
"username": {
"type": "text"
},
# 城市,类型为keyword,支持全匹配检索
"city": {
"type": "keyword"
},
# 年龄,类型为integer,支持范围检索
"age": {
"type": "integer"
}
}
}
}
Response Sample:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "user"
}
1.2 查询索引
Request:GET
/
Reuqest Sample: GET /user
Response Sample:
{
"user" : {
# 索引别名
"aliases" : { },
# 映射信息
"mappings" : {
"properties" : {
"age" : {
"type" : "integer"
},
"city" : {
"type" : "keyword"
},
"username" : {
"type" : "text"
}
}
},
# 索引配置
"settings" : {
"index" : {
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
},
# 分片数量
"number_of_shards" : "10",
"provided_name" : "user",
"creation_date" : "1638661589644",
# 分片副本数
"number_of_replicas" : "2",
"uuid" : "jUVE_NO0Q-aBgSqtvVp-jQ",
"version" : {
"created" : "7100299"
}
}
}
}
}
1.3 查询所有索引
Request:GET
/_cat/indices?v
Response Sample:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open user SL64Wq13S16skPvyeaYO6A 1 1 0 0 416b 208b
1.4 删除索引
Request:DELETE
/
Request Sample: DELETE /user
Response Sample:
{
"acknowledged": true
}
1.5 关闭索引
在有些场景上,如果索引暂时不想用了,又不想删除,防止日后要使用,则可以使用关闭功能
Request: POST
//_close
Request Sample: POST
/user/_close
Response Sample:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"indices" : {
"user" : {
"closed" : true
}
}
}
1.5 打开索引
当想要将close状态的索引重新打开时,需要使用索引打开功能
Request: POST //_open
Request Sample: POST /user/_open
Response Sample:
{
"acknowledged" : true,
"shards_acknowledged" : true
}
2 映射操作
ElasticSearch中的映射指是的数据的组织结构,对应关系型数据库中的表结构概念。
2.1 查看映射
Request: GET //_mapping
Request Sample: GET /user/_mapping
Response Sample:
{
"user" : {
"mappings" : {
"properties" : {
"age" : {
"type" : "integer"
},
"city" : {
"type" : "keyword"
},
"username" : {
"type" : "text"
}
}
}
}
}
2.2 扩展映射
当需要变更索引的映射结构时,可以通过扩展映射的方式实现
Request:
POST /{index_name}/_mappping
{
"properties": {
"{property_name}": {
"type": "{property_type}"
}
}
}
Request Sample:
POST /user/_mapping
{
"properties": {
"nickname": {
"type": "text"
}
}
}
Response Sample:
{
"acknowledged" : true
}
2.3 数据类型
数据类型 | 类型描述 | 使用场景 |
---|---|---|
keyword | 不可切分的字符串 | ES直按使用该字符串建立倒排索引,一般文档的过滤、排序、聚合,查询一般使用term查询 |
text | 可切分的字符串 | ES会按照切词算法对文本进行切分,建议倒排索引,一般用于模糊查询 |
*number | 包含long、integer、short、byte、double、float等 | 一般用于数值场景,在应用中应该尽量选择小的类型 |
boolean | 代表true或false | |
date | 日期类型 | 支持yyyy-MM-dd、yyyyMMdd、yyyyMMddHHmmss、yyyy-MM-ddTHH:mm:ss、yyyy-MM-ddTHH:mm:ss.SSS和yyyy-MM-ddTHH:mm:ss.SSSZ等格式,也支持epoch milis(从1970年1月1日0时到现在的毫秒数) |
geo_point | 地理类型 | |
object | 对象类型 | |
array | 数组类型 |
3 文档操作
3.1 新增文档
1)指定文档的主键
Request:
POST /{index_name}/_doc/{id}
{
...
}
2)使用默认的主键
Request:
POST /{index_name}/_doc
{
...
}
当不指定文档的主键时,该主键将由ES自动生成
Request Sample:
POST /user/_doc/1
{
"username": "kolbe",
"nickname": "kolbet",
"city": "chengdu",
"age": 100
}
Response Sample:
{
"_index" : "user",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 3,
"successful" : 3,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
3.2 更新文档
Request:
POST /{index_name}/_update/{id}
{
"doc": {...}
}
Request Sample:
POST /user/_update/1
{
"doc": {
"username": "kolbe",
"nickname": "tony",
"city": "chengdu",
"age": 100
}
}
Response Sample:
{
"_index" : "user",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 3,
"successful" : 3,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
3.3 删除文档
Request:
DELETE /{index_name}/_doc/{id}
Request Sample:
DELETE /user/_doc/1
Response Sample:
{
"_index" : "user",
"_type" : "_doc",
"_id" : "1",
"_version" : 3,
"result" : "deleted",
"_shards" : {
"total" : 3,
"successful" : 3,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1
}