ElasticSearch是大型架构核心,下面我详解ElasticSearch命令大全@mikechen
1. 查看集群健康状态
GET /_cluster/health
返回示例:
{
"cluster_name":"es-cluster",
"status":"green",
"number_of_nodes":3
}
状态说明:
| 状态 | 含义 |
|---|---|
| green | 主分片、副本正常 |
| yellow | 主分片正常,副本缺失 |
| red | 主分片异常 |
2. 查看所有索引
GET /_cat/indices?v
输出:
health status index docs.count store.size green open user10000 20mb
作用:
- 查看索引数量
- 查看文档数
- 查看存储大小
- 查看健康状态
3. 创建索引
PUT /user
高级创建:
PUT /user
{
"settings": {
"number_of_shards":3,
"number_of_replicas":1
}
}
说明:
| 参数 | 含义 |
|---|---|
| number_of_shards | 主分片数 |
| number_of_replicas | 副本数 |
4. 删除索引
DELETE /user
注意:
删除后数据不可恢复。
生产环境建议:
action.destructive_requires_name:true
避免误删:
DELETE /*
5. 查看索引 Mapping
GET /user/_mapping
作用:
查看字段类型。
示例:
{
"name": {
"type":"text"
},
"age": {
"type":"integer"
}
}
6. 新增文档
POST /user/_doc/1
{
"name":"Tom",
"age":20
}
自动生成 ID:
POST /user/_doc
{
"name":"Jack"
}
7. 查询文档
根据 ID 查询:
GET /user/_doc/1
返回:
{
"_source": {
"name":"Tom",
"age":20
}
}
8. 更新文档
POST /user/_update/1
{
"doc": {
"age":25
}
}
底层原理:
ES 不是真正“修改”。
而是:
- 删除旧文档;
- 写入新文档;
9. 删除文档
DELETE /user/_doc/1
注意:
删除后:
- 不会立即物理删除
- 会先标记 deleted
后续 Segment Merge 才真正删除。
10. Match 全文搜索
GET /user/_search
{
"query": {
"match": {
"name":"tom"
}
}
}
适用于:
- 中文搜索;
- 英文搜索;
- 分词检索;
11. Term 精确查询
GET /user/_search
{
"query": {
"term": {
"age":20
}
}
}
特点:
- 不分词;
- 精确匹配;
适合:
- ID;
- 状态;
- 标签;
- 枚举值;
12. Bool 组合查询
GET /user/_search
{
"query": {
"bool": {
"must": [
{"match": {"name":"Tom" }}
],
"filter": [
{"term": {"age":20 }}
]
}
}
}
Bool 相当于 SQL:
WHERE name='Tom' AND age=20
13. 分页查询
GET /user/_search
{
"from":0,
"size":10,
"query": {
"match_all": {}
}
}
说明:
| 参数 | 含义 |
|---|---|
| from | 起始位置 |
| size | 返回条数 |
14. 排序查询
GET /user/_search
{
"sort": [
{
"age": {
"order":"desc"
}
}
]
}
支持:
- 升序 asc;
- 降序 desc;
15. 聚合统计(Aggregation)
ES 最大优势之一:
支持海量数据实时分析。
GET /user/_search
{
"size":0,
"aggs": {
"avg_age": {
"avg": {
"field":"age"
}
}
}
}