ElasticSearch是大型架构核心,下面我详解ElasticSearch核心命令@mikechen
1、查看集群健康状态(_cluster/health)
这是排查 ES 的第一条命令。
GET /_cluster/health
返回结果:
{
"cluster_name": "es-cluster",
"status": "green",
"number_of_nodes": 3,
"active_primary_shards": 20
}
状态说明:
- green:全部正常
- yellow:副本未分配
- red:主分片异常
使用场景
- 集群巡检
- 故障排查
- 查看是否存在分片异常
2、查看所有索引(_cat/indices)
GET /_cat/indices?v
输出:
health status index docs.count store.size
green open user 100000 500mb
green open order 500000 2gb
参数说明:
- docs.count:文档数量
- store.size:索引大小
- health:健康状态
使用场景
查看:
- 所有索引
- 数据量
- 索引大小
3、创建索引
PUT /user
指定 Mapping:
PUT /user
{
"mappings": {
"properties": {
"name":{
"type":"text"
},
"age":{
"type":"integer"
}
}
}
}
适用于:
- 新业务上线
- 初始化索引
4、删除索引
DELETE /user
删除多个:
DELETE /user,order
删除全部(谨慎):
DELETE /*
注意
生产环境不要随便执行。
5、查看 Mapping(字段结构)
GET /user/_mapping
返回:
{
"properties": {
"name":{
"type":"text"
},
"age":{
"type":"integer"
}
}
}
作用:
查看字段类型:
- keyword
- text
- integer
- date
- boolean
6、插入文档
指定 ID:
POST /user/_doc/1
{
"name":"Tom",
"age":20
}
自动生成 ID:
POST /user/_doc
{
"name":"Jack"
}
7、查询文档
根据 ID:
GET /user/_doc/1
查询所有:
GET /user/_search
返回:
{
"hits":{
"total":100
}
}
8、更新文档
局部更新:
POST /user/_update/1
{
"doc":{
"age":30
}
}
覆盖更新:
PUT /user/_doc/1
{
"name":"Tom",
"age":30
}
9、删除文档
DELETE /user/_doc/1
删除符合条件的数据:
POST /user/_delete_by_query
{
"query":{
"match":{
"name":"Tom"
}
}
}
10、全文搜索(match)
最常见查询。
GET /user/_search
{
"query":{
"match":{
"name":"java"
}
}
}
特点:
- 会分词
- 全文检索
- 搜索最常用
适合:
- 商品搜索
- 博客搜索
- 新闻搜索
11、精确查询(term)
GET /user/_search
{
"query":{
"term":{
"status":1
}
}
}
特点:
- 不分词
- 完全匹配
适用于:
- ID
- 状态
- 类型
- keyword 字段
12、分页排序查询
分页:
GET /user/_search
{
"from":0,
"size":10
}
排序:
GET /user/_search
{
"sort":[
{
"age":"desc"
}
]
}
分页 + 排序:
GET /user/_search
{
"from":20,
"size":10,
"sort":[
{
"age":"desc"
}
]
}
说明:
- from:起始位置
- size:返回数量
13、批量操作(Bulk)
Bulk 是 ES 性能优化最重要的命令之一。
批量插入:
POST /_bulk
{"index":{"_index":"user","_id":"1"}}
{"name":"Tom","age":20}
{"index":{"_index":"user","_id":"2"}}
{"name":"Jack","age":25}
批量删除:
POST /_bulk
{"delete":{"_index":"user","_id":"1"}}
{"delete":{"_index":"user","_id":"2"}}
批量更新:
POST /_bulk
{"update":{"_index":"user","_id":"1"}}
{"doc":{"age":30}}