ES常用查询命令

这篇具有很好参考价值的文章主要介绍了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%"
      }
    }
  }
}

转换后:文章来源地址https://www.toymoban.com/news/detail-764462.html

GET /data/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "title": "java"
          }
        },
        {
          "term": {
            "title": "elasticsearch"
          }
        },
        {
          "term": {
            "title": "hadoop"
          }
        },
        {
          "term": {
            "title": "spark"
          }
        }
      ],
      "minimum_should_match": 3
    }
  }
}

到了这里,关于ES常用查询命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES查询常用语法

    目录 1. ElasticSearch之查询返回结果各字段含义 2. match 查询 3. term查询 4. terms 查询 5. range 范围 6. 布尔查询 6.1 filter加快查询效率的原因 7. boosting query(提高查询) 8. dis_max(最佳匹配查询) 9. 分页 10. 聚合查询【内含实际的demo】 执行命令:索引库名称/_search 空搜索的结果为: 按照

    2023年04月09日
    浏览(40)
  • ES学习-常用的查询接口

    我们有大部分数据要通过es进行查询,上周在查的时候发现有些不会,今天有空琢磨了一下 常用的查询接口整理成collection了,附在链接里哈哈哈哈哈哈哈 链接:   https://pan.baidu.com/s/1RSFvgbNALPmItW9unvb7Dg?pwd=qwer   提取码: qwer 复制这段内容后打开百度网盘手机App,操作更方便哦

    2024年02月09日
    浏览(29)
  • 【ES常用查询】基于ElasticsearchRestTemplate及NativeSearchQuery的查询

    包含当前es所有的查询, 需要什么代码直接照搬,改个参数就行! 用的好请务必给我点赞!!!感谢爱你们!!! 为啥写这篇文章呢: 大概是因为目前公司用的api跟以前的不太一样, 以前我们是基于高标准客户端直接做的, 但是目前这边同事是基于ElasticsearchRestTemplate跟

    2024年02月03日
    浏览(31)
  • 工作常用ES DSL查询语句(干货满满)

       工作中几乎每天都需要使用到ES查询数据,需要根据自己的查询需求构造DSL查询语句来实现,本文记录并分享本人工作中常用的DSL语句以及所遇到问题的解决方案,DSL语句灵活多变,可进行多种组合,任你搭配,让我们一起往下看,希望对你有帮助。 2.1 查看所有索引的

    2024年02月02日
    浏览(69)
  • ElasticSearch常用查询命令查看基本信息

    查看es的集群状态 http://IP:9200/_cat/healthv 注: IP指es集群某个ip地址, v表示格式化输出 查看es集群节点列表 http://IP:9200/_cat/nodesv 查看es集群所有索引及数据大小 http://IP:9200/_cat/indicesv 查看单个索引结构信息 http://IP:9200/indexNamepretty=true 注: indexName是索引名字, pretty=true表示格式化输出

    2024年02月03日
    浏览(30)
  • Elasticsearch基础学习-常用查询和基本的JavaAPI操作ES

    Elasticsearch是一个基于 lucene 、分布式、通过Restful方式进行交互的 近实时搜索 平台框架。 ELK技术栈是Elasticsearch、Logstash、Kibana三大开元框架首字母大写简称。 而Elasticsearch 是一个 开源的高扩展的分布式全文搜索引擎 , 是整个 ELK技术栈的核心。 Elasticsearch是一个基于lucene、分

    2024年02月11日
    浏览(48)
  • ES-1:Java的 ElasticsearchTemplate Or ElasticsearchRepository基础常用查询写法

    目录 安装elasticsearch maven 数据来源: 网易数据 mysql的相关语法 Java代码 = in like between  and is null is not null order by max min avg sum (发现es新语法 stats 直接统计聚合)

    2024年02月15日
    浏览(37)
  • DB SQL 转 ES DSL(支持多种数据库常用查询、统计、平均值、最大值、最小值、求和语法)...

    1. 简介   日常开发中需要查询 Elasticsearch 中的数据时,一般会采用 RestHighLevelClient 高级客户端封装的API。项目中一般采用一种或多种关系型数据库(如: Mysql 、 PostgreSQL 、 Oracle 等) + NoSQL(如: Elasticsearch )存储方案;不同关系数据库可以采用 Mybatis-Plus 方案屏蔽数据库的方言

    2024年01月17日
    浏览(40)
  • 【elasticsearch】 es状态查看节点分片信息:/_cat/shards

    在kibana查询: 查询结果: index:索引名称 shard:分片数 prirep:分片类型,p=pri=primary为主分片,r=rep=replicas为复制分片 state:分片状态,STARTED为正常分片,INITIALIZING为异常分片 docs:记录数 store:存储大小 ip:es节点ip node:es节点名称

    2024年02月11日
    浏览(36)
  • ES命令行查询es集群的状态、分片、索引

    查看es集群状态 查看es分片信息 查看es索引 查看ES索引 本文参考:https://www.cnblogs.com/expiator/p/14847705.html

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包