ES常用查询命令

一、基本命令

1、获取所有_cat命令

复制代码
curl -X GET localhost:9200/_cat

2、获取es集群服务健康状态

复制代码
curl -X GET localhost:9200/_cat/health?v

epoch: 时间戳的 Unix 时间戳格式,表示快照生成的时间。

timestamp: 可读性更强的时间戳格式,表示快照生成的时间(08:06:34)。

cluster: Elasticsearch 集群的名称,这里是 "es-cluster"。

status: 集群的健康状态,这里是 "yellow"。Elasticsearch 集群状态通常有三种:green(绿色,健康),yellow(黄色,部分健康),red(红色,不健康)。"yellow" 状态表示集群中的某些副本不可用,但主分片是可用的。

node.total: 集群中节点的总数,这里是 1 个节点。

node.data: 充当数据节点的节点数,这里是 1 个节点。

shards: 集群中分片的总数,这里是 98 个分片。

pri: 主分片(primary shard)的数量,这里是 98 个主分片。

relo: 正在进行重新定位的分片数量,这里是 0。

init: 初始化的分片数量,这里是 0。

unassign: 未分配的分片数量,这里是 27。

pending_tasks: 挂起的任务数,这里是 0。

max_task_wait_time: 最大任务等待时间,这里是没有具体数值。

active_shards_percent: 活动分片的百分比,这里是 78.4%。这表示在集群中,有 78.4% 的分片是活动的,而剩下的可能是不可用或者正在恢复的。

3、查看es节点信息

复制代码
curl -X GET localhost:9200/_cat/nodes?v

ip: 节点的IP地址,这里是"192.168.52.11"。

heap.percent: 节点的堆内存使用百分比,这里是67%。

ram.percent: 节点的系统内存使用百分比,这里是98%。

cpu: 节点的CPU使用率,这里是10%。

load_1m: 1分钟负载平均值,这里是0.69。

load_5m: 5分钟负载平均值,这里是0.36。

load_15m: 15分钟负载平均值,这里是0.50。

node.role: 节点的角色,这里是"*",表示这是一个主节点(master node)。

master: 指示该节点是否是主节点,这里是"*",表示它是主节点。

name: 节点的名称,这里是"node-1"。

4、查看es指定节点信息

复制代码
curl -X GET localhost:9200/_nodes/node-1?pretty=true

二、索引操作

1、查看ES中所有的索引

复制代码
curl -X GET localhost:9200/_cat/indices?v

health: 索引的健康状态,这里是 "yellow"。Elasticsearch 索引的健康状态有三种:green(绿色,健康),yellow(黄色,部分健康),red(红色,不健康)。"yellow" 状态表示索引的某些分片处于未分配状态,但主分片是可用的。

status: 索引的状态,这里是 "open"。这表示索引处于打开状态,可以进行读取和写入操作。

index: 索引的名称,这里是 "nginx-access-log-2023.09.13"。

uuid: 索引的唯一标识符。

pri: 主分片(primary shard)的数量,这里是 1 个主分片。

rep: 副本分片(replica shard)的数量,这里也是 1 个副本分片。

docs.count: 索引中文档的总数,这里是 20。

docs.deleted: 索引中已删除的文档数量,这里是 0。

store.size: 索引的存储大小,这里是 34.1KB。

pri.store.size: 主分片的存储大小,这里也是 34.1KB。

2、新建索引

复制代码
curl -X PUT localhost:9200/testyf

3、新建索引并增加数据 POST /索引/端点

复制代码
POST /data/_bulk
{ "index": { "_id": 1 }}
{ "articleID" : "XHDK-A-1293-#fJ3", "userID" : 1, "hidden": false, "postDate": "2022-01-01" }
{ "index": { "_id": 2 }}
{ "articleID" : "KDKE-B-9947-#kL5", "userID" : 1, "hidden": false, "postDate": "2022-01-02" }

4、追加数据

追加新增字段

复制代码
POST /data/_bulk
{"update":{"_id":"1"}}
{"doc":{"title":"this is java and elasticsearch blog"}}

5、删除索引

复制代码
curl -X DELETE localhost:9200/testyf

6、查看指定索引信息

复制代码
curl -X GET localhost:9200/nginx-access-log-2023.09.13?pretty

7、查看索引的统计信息

复制代码
curl -X GET localhost:9200/nginx-access-log-2023.09.13/_stats?pretty

三、文档操作

一)查询索引中的全部文档

复制代码
curl -X GET localhost:9200/nginx-access-log-2023.09.13/_search?pretty

注意:?pertty 表示让数据格式化,更好的展示

2)根据条件查询索引中的文档

单一条件搜索:

1、搜索 response_code 包含 200

复制代码
POST /nginx-access-log-2023.09.13/_search?pretty
{
  "query": {
    "match": {
      "response_code": "200"
    }
  }
}

2、搜索 message 包含 34 或者 包含 36

复制代码
POST /nginx-access-log-2023.09.25/_search?pretty
{
  "query": {
    "match": {
      "message": "34 36"
    }
  },
  "size": 1000
}

3、搜索 message 包含 34 并且 包含 36

复制代码
POST /nginx-access-log-2023.09.25/_search?pretty
{
  "query": { 
    "match": { 
      "message": {
        "query": "34 36",
        "operator": "and"
      }
    } 
  },
  "size": 1000
}

4、搜索 message 包含 34 36 15 22 中超过 50% 以上比例的

复制代码
POST /nginx-access-log-2023.09.25/_search?pretty
{
  "query": { 
    "match": { 
      "message": {
        "query": "34 36 15 22",
        "minimum_should_match": "50%"
      }
    } 
  },
  "size": 1000
}

5、使用sort对查询数据排序,并按照size返回查询的数量(desc:降序 / asc:升序)

复制代码
GET /data/_search?size=2
{
  "query": {
    "match": {
      "title": "java elasticsearch"
    }
  },
  "sort": {
    "postDate": {
      "order": "desc"
    }
  }
}

多条件搜索:

1、(&&使用 must )搜索 response_code 包含 200,并且 @timestamp 包含 "2023-09-25T12:43:46.000Z"

复制代码
POST /nginx-access-log-2023.09.25/_search?pretty
{
    "query": {
        "bool": {
            "must": [{
                "match": {
                    "response_code": "200"
                }
            },{
                "match": {
                    "@timestamp": "2023-09-25T12:43:46.000Z"
                }
            }]
        }
    },
    "size": 100
}

2、(|| 使用 should )搜索 response_code 包含 200,或者 @timestamp 包含 "2023-09-25T12:43:46.000Z"

复制代码
POST /nginx-access-log-2023.09.25/_search?pretty
{
    "query": {
        "bool": {
            "should": [{
                "match": {
                    "response_code": "200"
                }
            },{
                "match": {
                    "@timestamp": "2023-09-25T12:43:46.000Z"
                }
            }]
        }
    },
    "size": 100
}

3、(|| 使用 should )搜索 response_code 包含 200,或者 @timestamp 包含 "2023-09-25T12:43:46.000Z",或者 message 包含 "Windows",至少满足2个以上

复制代码
POST /nginx-access-log-2023.09.25/_search?pretty
{
    "query": {
        "bool": {
            "should": [{
                "match": {
                    "response_code": "200"
                }
            },{
                "match": {
                    "@timestamp": "2023-09-25T12:43:46.000Z"
                }
            },{
                "match": {
                    "message": "Windows"
                }
            }],
            "minimum_should_match": 2
        }
    },
    "size": 100
}

4、搜索 response_code 包含 200,并且 @timestamp 不包含 "2023-09-25T12:43:46.000Z"

复制代码
POST /nginx-access-log-2023.09.25/_search?pretty
{
    "query": {
        "bool": {
            "must": [{
                "match": {
                    "response_code": "200"
                }
            }],
            "must_not": [{
                "match": {
                    "@timestamp": "2023-09-25T12:43:46.000Z"
                }
            }]
        }
    },
    "size": 100
}

5、统计 response_code 包含 200 的有多少个

复制代码
POST /nginx-access-log-2023.09.25/_count?pretty
{
    "query": {
        "bool": {
            "must": [{
                "match": {
                    "response_code": "200"
                }
            }]
        }
    }
}

3)转换

term:不分词,直接匹配字段的完整值

match:根据字段的分词器对搜索文本进行分词

1、普通match如何转换为term+should

转换前:

复制代码
GET /data/_search
{
  "query": {
    "match": {
      "title": "java elasticsearch"
    }
  }
}

转换后:

复制代码
GET /data/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "title": "java"
          }
        },
        {
          "term": {
            "title": "elasticsearch"
          }
        }
      ]
    }
  }
}

2、and match如何转换为term+must

转换前:

复制代码
GET /data/_search
{
  "query": {
    "match": {
      "title": {
        "query": "java elasticsearch",
        "operator": "and"
      }
    }
  }
}

转换后:

复制代码
GET /data/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "title": "java"
          }
        },
        {
          "term": {
            "title": "elasticsearch"
          }
        }
      ]
    }
  }
}

3、minimum_should_match如何转换

转换前:

复制代码
GET /data/_search
{
  "query": {
    "match": {
      "title": {
        "query": "java elasticsearch hadoop spark",
        "minimum_should_match": "75%"
      }
    }
  }
}

转换后:

复制代码
GET /data/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "title": "java"
          }
        },
        {
          "term": {
            "title": "elasticsearch"
          }
        },
        {
          "term": {
            "title": "hadoop"
          }
        },
        {
          "term": {
            "title": "spark"
          }
        }
      ],
      "minimum_should_match": 3
    }
  }
}
相关推荐
TechEdu2026061 小时前
[计算机科学]大数据硬件架构与软件架构概览
大数据·计算机科学
爱莉希雅&&&1 小时前
elasticsearch+kibana+logstash+filebeat链路部署流程
大数据·elasticsearch·搜索引擎·kibana·logstash·filebeat
FII工业富联科技服务1 小时前
从灯塔工厂到AI Factory新模式:AI正在重构制造业的四大核心能力
大数据·运维·人工智能·重构·ar·制造
小五传输1 小时前
自主可控建设指南:Serv-u替代方案,实现平滑迁移业务不中断
大数据·运维·安全
Spey_Events1 小时前
【核心议题发布】聚焦深度维修与 AI 智慧革新!2026中国民用航空维修智造展——议题重磅发布!
大数据·人工智能
czzxxxxxx1 小时前
创客匠人AI智能体:知识付费从“重人力”走向“自动化”的拐点
大数据·人工智能
大大大大晴天1 小时前
Hudi技术内幕:Clustering原理与实践
大数据
ZKNOW甄知科技2 小时前
燕千云深度集成飞书:以AI之力,开启无感IT运维体验
大数据·运维·网络·数据库·人工智能·低代码·集成学习
京和动物医院·总院2 小时前
2026年未央区宠物医院:如何挑选最适合您爱宠的健康守护者
大数据·人工智能·python
商业模式源码开发2 小时前
2026年GEO优化全解析:生成式引擎优化如何重构企业流量与品牌护城河
大数据·人工智能·ai