Elasticsearch(ES)基础查询语法的使用

news2025/1/22 17:43:29
1. Match Query (全文检索查询)
  • 用于执行全文检索,适合搜索文本字段。

    {
    “query”: {
    “match”: {
    “field”: “value”
    }
    }
    }

  • match_phrase:精确匹配短语,适合用于短语搜索。

    {
    “query”: {
    “match_phrase”: {
    “field”: “text”
    }
    }
    }

2. Term Query (精确匹配查询)
  • 用于对某个字段的精确值进行查询,常用于不分词的字段(如ID、标签、关键词等)。

    {
    “query”: {
    “term”: {
    “field”: “value”
    }
    }
    }

3. Range Query (范围查询)
  • 用于查询数值、日期、时间等范围内的数据。

    {
    “query”: {
    “range”: {
    “field”: {
    “gte”: 10, // 大于等于
    “lte”: 100, // 小于等于
    “gt”: 10, // 大于
    “lt”: 100 // 小于
    }
    }
    }
    }

4. Bool Query (布尔查询)
  • 用于将多个查询组合在一起,可以使用 mustshouldmust_not 等操作符。

    {
    “query”: {
    “bool”: {
    “must”: [
    { “match”: { “field1”: “value1” } },
    { “match”: { “field2”: “value2” } }
    ],
    “filter”: [
    { “range”: { “price”: { “gte”: 50 } } }
    ],
    “should”: [
    { “match”: { “field3”: “value3” } }
    ],
    “must_not”: [
    { “term”: { “field4”: “value4” } }
    ]
    }
    }
    }

5. Prefix Query (前缀匹配查询)
  • 用于查询字段值的前缀匹配,常用于搜索补全或模糊搜索。

    {
    “query”: {
    “prefix”: {
    “field”: “prefix_value”
    }
    }
    }

6. Wildcard Query (通配符查询)
  • 支持*(匹配任意字符)和?(匹配单个字符)的通配符查询。

    {
    “query”: {
    “wildcard”: {
    “field”: “prefix*”
    }
    }
    }

7. Fuzzy Query (模糊查询)
  • 用于查询与某个值相似的字段,常用于容忍拼写错误的场景。

    {
    “query”: {
    “fuzzy”: {
    “field”: {
    “value”: “exampl”
    }
    }
    }
    }

8. Regexp Query (正则表达式查询)
  • 使用正则表达式进行查询。

    {
    “query”: {
    “regexp”: {
    “field”: “pattern.*”
    }
    }
    }

9. Match All Query (匹配所有文档)
  • 用于返回索引中的所有文档。

    {
    “query”: {
    “match_all”: {}
    }
    }

10. Term Range Query (字段范围查询)
  • 用于查询一个字段值在特定范围内的文档,类似 range query,但 term 查询是基于精确值的。

    {
    “query”: {
    “range”: {
    “field”: {
    “gte”: 5,
    “lte”: 10
    }
    }
    }
    }

11. Exists Query (字段存在查询)
  • 用于查询某个字段是否存在。

    {
    “query”: {
    “exists”: {
    “field”: “field_name”
    }
    }
    }

12. Geo Queries (地理位置查询)
  • Elasticsearch 支持基于地理位置的查询,如基于位置的范围查询或距离查询。

  • Geo Distance Query

    {
    “query”: {
    “bool”: {
    “filter”: {
    “geo_distance”: {
    “distance”: “200km”,
    “location”: {
    “lat”: 40.73,
    “lon”: -74.1
    }
    }
    }
    }
    }
    }

13. Aggregation (聚合查询)
  • Elasticsearch 提供了强大的聚合功能,可以对查询结果进行分组、统计等操作。

  • Terms Aggregation (分词聚合)

    {
    “aggs”: {
    “group_by_field”: {
    “terms”: {
    “field”: “field_name”
    }
    }
    }
    }

  • Range Aggregation (范围聚合)

    {
    “aggs”: {
    “price_ranges”: {
    “range”: {
    “field”: “price”,
    “ranges”: [
    { “to”: 100 },
    { “from”: 100, “to”: 200 },
    { “from”: 200 }
    ]
    }
    }
    }
    }

14. Highlighting (高亮查询)
  • 用于返回搜索结果中高亮显示匹配的字段。

    {
    “query”: {
    “match”: {
    “field”: “value”
    }
    },
    “highlight”: {
    “fields”: {
    “field”: {}
    }
    }
    }

15. Source Filtering (源字段过滤)
  • 用于控制哪些字段需要返回,哪些不需要返回。

    {
    “_source”: [“field1”, “field2”],
    “query”: {
    “match”: {
    “field”: “value”
    }
    }
    }

16. Prefix and Wildcard Query (前缀和通配符查询)
  • 用于对字段值进行前缀或通配符匹配,常用于实现补全或模糊搜索。

    {
    “query”: {
    “prefix”: {
    “field”: “prefix*”
    }
    }
    }


扩展*

匹配度查询

Elasticsearch 中,minimum_should_match 是布尔查询(bool query)的一部分,用于控制 should 子句的匹配度。should 子句的作用是定义一组可选条件,当文档满足其中至少一个条件时,它会被视为匹配。通过设置 minimum_should_match 参数,可以控制至少多少个 should 子句必须匹配,以提高查询的精度和灵活性。

1. 基本概念:
  • 在布尔查询中,should 子句表示可选条件。
  • 默认情况下,如果 bool 查询中有多个 should 子句,文档只需满足其中任何一个条件就可以匹配。
  • 使用 minimum_should_match 参数,可以要求文档至少满足某些数量的 should 子句,以增加查询的严格性。

例如:如果你有 5 个 should 子句,并设置 minimum_should_match 为 3,则文档必须满足其中至少 3 个 should 条件才能被视为匹配。

2. 用法:

minimum_should_match 可以设置为:

  • 整数值:指定最小匹配的 should 子句数量。
  • 百分比:指定至少要匹配的 should 子句的百分比。
  • 动态值:例如基于文档数量或其他复杂逻辑的动态匹配要求。
3. 示例:
(1) 简单的布尔查询 - 至少匹配 2 个 should 子句
{
  "query": {
    "bool": {
      "should": [
        { "match": { "field1": "value1" } },
        { "match": { "field2": "value2" } },
        { "match": { "field3": "value3" } }
      ],
      "minimum_should_match": 2  // 至少匹配 2 个 `should` 子句
    }
  }
}
  • 在这个例子中,文档需要匹配至少 2 个 should 子句(例如,匹配 field1field2 或者 field2field3)。
(2) 使用百分比的 minimum_should_match

如果你有多个 should 子句,可以通过百分比来控制匹配条件。例如,如果你有 5 个 should 子句,设置 minimum_should_match 为 60%,则至少需要满足 3 个子句。

{
  "query": {
    "bool": {
      "should": [
        { "match": { "field1": "value1" } },
        { "match": { "field2": "value2" } },
        { "match": { "field3": "value3" } },
        { "match": { "field4": "value4" } },
        { "match": { "field5": "value5" } }
      ],
      "minimum_should_match": "60%"  // 至少匹配 60% 的 `should` 子句 (即 3 个子句)
    }
  }
}
(3) 动态匹配 - 基于词数的 minimum_should_match

还可以根据查询中的词数设置 minimum_should_match,比如设置为 "3<80%",表示如果查询中有 3 个以上的 should 子句,则至少匹配其中 80%的子句。

{
  "query": {
    "bool": {
      "should": [
        { "match": { "field1": "value1" } },
        { "match": { "field2": "value2" } },
        { "match": { "field3": "value3" } },
        { "match": { "field4": "value4" } },
        { "match": { "field5": "value5" } }
      ],
      "minimum_should_match": "3<80%"  // 如果有超过 3 个 `should` 子句,至少匹配 80%
    }
  }
}
4. 如何决定 minimum_should_match
  • 业务需求:设置 minimum_should_match 的主要目的是根据业务需求平衡准确度和召回率。如果你需要更严格的匹配,增加 minimum_should_match 的值;如果需要更高的召回率,可以减少它。
  • 文档内容:在处理文档时,字段的长度、词汇密度、停用词等都可能影响查询的结果。可以通过实验和调整 minimum_should_match 来找到最适合的设置。
5. 示例:

假设你有以下文档数据:

{
  "field1": "apple orange banana",
  "field2": "apple orange",
  "field3": "banana"
}

你要查找包含 “apple”“orange” 的文档,并且需要设置 minimum_should_match 为 1。查询语句如下:

{
  "query": {
    "bool": {
      "should": [
        { "match": { "field1": "apple" } },
        { "match": { "field1": "orange" } },
        { "match": { "field1": "banana" } }
      ],
      "minimum_should_match": 1
    }
  }
}

在这个例子中,只要文档匹配一个 should 子句(比如 field1 包含 “apple” 或者 “orange”),就会被视为匹配。

6. 注意事项
  • minimum_should_match 在布尔查询中是可选的,只有当你使用了多个 should 子句时才有意义。
  • 设置的值越大,匹配条件越严格。通过调整 minimum_should_match 的值,可以灵活地调整查询的宽松程度。
  • minimum_should_match 参数可以通过数值、百分比、动态规则来设置,以适应不同的查询需求。
7. Match 查询的选项
(1) fuzziness:模糊匹配

如果你希望支持拼写错误或词语变化,可以使用 模糊查询。通过设置 fuzziness,Elasticsearch 会尝试匹配与查询词相似的词。

{
  "query": {
    "match": {
      "title": {
        "query": "Elasticsearh",  // 拼写错误
        "fuzziness": "AUTO"  // 自动模糊匹配
      }
    }
  }
}
  • fuzziness: "AUTO":根据查询词的长度自动设置模糊匹配的编辑距离。
  • fuzziness: "1":设置允许的最大编辑距离为 1(允许 1 个字符的更改,如替换、删除、插入)。
(2) minimum_should_match:最小匹配

在某些情况下,你可能想要求查询中至少匹配一个或多个词。minimum_should_match 可以控制需要匹配的最小词数。

{
  "query": {
    "match": {
      "content": {
        "query": "Elasticsearch tutorial advanced",
        "minimum_should_match": 2  // 至少匹配 2 个词也可以用百分比替代示例:"60%"(指匹配总分词的百分比)
      }
    }
  }
}
  • minimum_should_match:设置至少要匹配多少个词。
(3) boost:提高某个词的匹配优先级

你可以通过 boost 来提高查询某些词的权重,使这些词匹配的文档更具优先级。

{
  "query": {
    "match": {
      "content": {
        "query": "Elasticsearch tutorial",
        "boost": 2.0  // 增加查询的权重,使该查询匹配的文档优先返回
      }
    }
  }
}
  • boost:提高查询的匹配优先级,权重范围通常是 0 到 10,数值越大,匹配的优先级越高。
** match 查询常见问题**
(1) 如何处理大小写问题?

默认情况下,match 查询不区分大小写。Elasticsearch 会使用分词器(如 standard 分词器)将文本转为小写,因此可以处理大小写问题。

(2) match 查询与 term 查询的区别
  • match 查询:适用于文本字段的分词匹配,会分析查询文本并与字段内容进行分词对比。
  • term 查询:用于精确匹配,适用于不分词的字段(如 keyword 字段)。

聚合相关

在 Elasticsearch 中,**聚合(Aggregation)**是一个强大的功能,用于对查询结果进行分组、统计、度量等操作。聚合查询不仅可以按字段进行分组,还可以进行计算(如求和、平均值等),在数据分析和可视化中非常有用。聚合查询和普通查询(例如 matchrange 查询)是分开的,但可以结合使用。

1. 聚合查询的基本结构

聚合查询通常包含在 aggs(聚合)部分。在 Elasticsearch 中,聚合查询并不返回实际的文档,而是返回聚合结果,例如每个分组的文档数量、平均值、最大值等。

聚合查询的基本结构:

{
  "query": {
    "match": {
      "field": "value"
    }
  },
  "aggs": {
    "aggregation_name": {
      "aggregation_type": {
        "field": "field_name"
      }
    }
  }
}
2. 常见的聚合类型

以下是 Elasticsearch 中常见的聚合类型:

(1) Terms 聚合(分词聚合)

按字段值进行分组统计,返回每个字段值及其出现次数。常用于进行分组查询。

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "group_by_field": {
      "terms": {
        "field": "field_name"
      }
    }
  }
}

示例:
假设你有一个名为 category 的字段,你想按类别进行分组查询,统计每个类别的文档数量。

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "categories": {
      "terms": {
        "field": "category.keyword"  // 使用 .keyword 进行精确匹配
      }
    }
  }
}
(2) Range 聚合(范围聚合)

用于按指定的数值范围对文档进行分组。适用于数值、日期等字段。

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "price_ranges": {
      "range": {
        "field": "price",
        "ranges": [
          { "to": 50 },
          { "from": 50, "to": 100 },
          { "from": 100 }
        ]
      }
    }
  }
}

示例:
假设你想要按价格进行分段统计,例如分为“低于 50”、“50 到 100”以及“大于 100”三个区间。

(3) Avg 聚合(平均值聚合)

用于计算字段的平均值。

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "average_price": {
      "avg": {
        "field": "price"
      }
    }
  }
}

示例:
计算 price 字段的平均值。

(4) Sum 聚合(求和聚合)

用于计算字段的总和。

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "total_price": {
      "sum": {
        "field": "price"
      }
    }
  }
}

示例:
计算 price 字段的总和。

(5) Max 和 Min 聚合(最大值和最小值聚合)

用于计算字段的最大值和最小值。

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "max_price": {
      "max": {
        "field": "price"
      }
    },
    "min_price": {
      "min": {
        "field": "price"
      }
    }
  }
}

示例:
计算 price 字段的最大值和最小值。

(6) Date Histogram 聚合(日期直方图聚合)

将日期数据按时间段进行分组,常用于按天、周、月等时间单位进行聚合。

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "sales_over_time": {
      "date_histogram": {
        "field": "timestamp",
        "calendar_interval": "day"  // 按天分组
      }
    }
  }
}

示例:
按天统计销售数据。

(7) Top Hits 聚合(获取 top N 文档)

获取符合条件的 top N 文档,通常用于获取聚合组中的部分文档,适用于展示最高分的文档。

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "top_categories": {
      "terms": {
        "field": "category.keyword"
      },
      "aggs": {
        "top_hits": {
          "top_hits": {
            "size": 3  // 返回每个类别下的前 3 个文档
          }
        }
      }
    }
  }
}
(8) Cardinality 聚合(基数聚合)

用于计算字段的基数(去重后的唯一值数量)。例如,统计不同的用户数或产品数。

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "unique_users": {
      "cardinality": {
        "field": "user_id"
      }
    }
  }
}

示例:
计算 user_id 字段中不重复的用户数量。

3. 聚合嵌套

聚合查询不仅可以进行单一聚合,还可以进行嵌套聚合,即在一个聚合的结果上进行进一步的聚合。下面是一个例子,展示如何在一个 terms 聚合的每个分组上执行进一步的聚合:

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "categories": {
      "terms": {
        "field": "category.keyword"
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
}

示例:
先按 category 分组,再计算每个类别的平均价格。

4. 聚合结果的格式

聚合查询的结果会包含在 aggregations(或 aggs)字段中。结果结构通常类似于下面的格式:

{
  "aggregations": {
    "categories": {
      "buckets": [
        {
          "key": "electronics",  // 分组的字段值
          "doc_count": 100,      // 每个分组的文档数量
          "avg_price": {
            "value": 300         // 每个分组的聚合结果,如平均价格
          }
        },
        {
          "key": "clothing",
          "doc_count": 80,
          "avg_price": {
            "value": 50
          }
        }
      ]
    }
  }
}

聚合结果:

  • buckets:每个分组的结果集合。
  • key:分组的字段值。
  • doc_count:该分组中的文档数量。
  • 聚合结果(例如 avg_price):聚合操作的结果。
5. 聚合的性能优化
  • 避免过多的 terms 聚合terms 聚合会对字段值进行分组,可能会消耗大量内存和计算资源。对于高基数字段(如用户ID),考虑限制返回的分组数量。
  • 限制返回的文档数量:可以通过 size 参数来限制每个分组返回的文档数量,避免过多数据返回。
  • 减少聚合的嵌套深度:过多层次的嵌套聚合会增加 Elasticsearch 的计算负担,尽量保持聚合的平面结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2280486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

51c大模型~合集105

我自己的原文哦~ https://blog.51cto.com/whaosoft/13101924 #刚刚&#xff0c;ChatGPT开始有了执行力&#xff01; 现在 AI 智能体可以 24*7 小时为你打工。 2025 刚过去了半个月&#xff0c;OpenAI 在智能体领域「开大」了。 今天&#xff0c;OpenAI 正在为 ChatGPT 推出…

从零到上线:Node.js 项目的完整部署流程(包含 Docker 和 CICD)

从零到上线&#xff1a;Node.js 项目的完整部署流程&#xff08;包含 Docker 和 CI/CD&#xff09; 目录 项目初始化&#xff1a;构建一个简单的 Node.js 应用设置 Docker 环境&#xff1a;容器化你的应用配置 CI/CD&#xff1a;自动化构建与部署上线前的最后检查&#xff1a;…

《自动驾驶与机器人中的SLAM技术》ch4:基于预积分和图优化的 GINS

前言&#xff1a;预积分图优化的结构 1 预积分的图优化顶点 这里使用 《自动驾驶与机器人中的SLAM技术》ch4&#xff1a;预积分学 中提到的散装的形式来实现预积分的顶点部分&#xff0c;所以每个状态被分为位姿&#xff08;&#xff09;、速度、陀螺零偏、加计零偏四种顶点&am…

Ubuntu系统更改IP,保姆级教程

原理概述 本篇文章所用工具&#xff1a; Xshell&#xff1a;点击下载 VMware Workstation Pro&#xff1a;点击下载 密钥需要自行搜索所下载的VMware对应版本密钥。 IP 地址 IP 地址&#xff08;Internet Protocol Address&#xff09;是分配给每个连接到计算机网络的设备的…

【Linux】进程管理(一篇入门-进程:基本概念、PCB进程块、进程的创建、等待、终止、状态,exec函数族的使用)

本节主要内容&#xff1a;进程的一些基本概念&#xff0c;进程控制块PCB&#xff0c;以及如何在一个C程序里创建进程、终止进程、等待进程&#xff0c;包括孤儿进程、僵尸进程等特殊状态的进程&#xff0c;并涉及回收进程的概念。最终是exec函数族的函数使用方法及用途。 程序与…

RabbitMQ 在实际应用时要注意的问题

1. 幂等性保障 1.1 幂等性介绍 幂等性是数学和计算机科学中某些运算的性质,它们可以被多次应⽤,⽽不会改变初始应⽤的结果. 应⽤程序的幂等性介绍 在应⽤程序中,幂等性就是指对⼀个系统进⾏重复调⽤(相同参数),不论请求多少次,这些请求对系统的影响都是相同的效果. ⽐如数据库…

EXCEL+Python搞定数据处理(第一部分:Python入门-第1章:为什么要用Python为Excel编程)

参考资料&#xff1a; ExcelPython飞速搞定数据分析与处理&#xff0c;[瑞士] 费利克斯朱姆斯坦 著&#xff0c;中国工信出版社、人民邮电出版社出版(“Python for Excel, by Felix Zumstein (O’Reilly). Copyright 2021 Zoomer Analytics LLC, 978-1-492-08100-5”) 将不定…

MPLS VPN 部署与应用

一.简介 MPLS&#xff0c;称之为多协议标签交换&#xff0c;在九十年代中期被提出来&#xff0c;用于解决传统IP报文依赖查表转发而产生的瓶颈&#xff0c;现多用于VPN技术&#xff0c;MPLS报头封装在数据链路层之上&#xff0c;网络层之下。本文为结合了华为技术和新华三技术…

麒麟操作系统服务架构保姆级教程(十三)tomcat环境安装以及LNMT架构

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 之前咱们学习了LNMP架构&#xff0c;但是PHP对于技术来说确实是老掉牙了&#xff0c;PHP的市场占有量越来越少了&#xff0c;我认识一个10年的PHP开发工程师&#xff0c;十年工资从15k到今天的6k&am…

67,【7】buuctf web [HarekazeCTF2019]Avatar Uploader 2(未完成版)

进入靶场 和上一题一母同胞&#xff0c;先把上一题的答案拖进去看看 区别在于上一题这块直接显示了flag&#xff0c;这里并没有 看看源码 加载不出来&#xff0c;ctrlu <!-- 上传头像的提示信息&#xff0c;说明上传要求 --><p>Please upload a PNG image less th…

QD Laser携“Lantana”激光器参展SPIE光子学西部展2025,聚焦紧凑型设计

据悉&#xff0c;QD Laser公司将在2025年SPIE光子学西部展览会上展出其最新产品——世界最小一体化紧凑型可见光激光器“Lantana”。该展会将于1月28日至30日在旧金山的Moscone中心举行。 在展会期间&#xff0c;QD Laser公司将现场展示这款超小型、轻便设备—— “Lantana”。…

63,【3】buuctf web Upload-Labs-Linux 1

进入靶场 点击pass1 查看提示 既然是上传文件&#xff0c;先构造一句话木马&#xff0c;便于用蚁剑连接 <?php eval($_POST[123])?> 上传木马 文件后缀写为.php.jpg 右键复制图片地址 打开蚁剑连接 先点击测试连接&#xff0c;显示成功后&#xff0c;再点击添加即可 …

不重启JVM,替换掉已经加载的类

不重启JVM&#xff0c;替换掉已经加载的类 直接操作字节码 使用ASM框架直接操作class文件&#xff0c;在类中修改代码&#xff0c;然后retransform就可以了 下边是BTrace官方提供的一个简单例子&#xff1a; package com.sun.btrace.samples;import com.sun.btrace.annotati…

使用插件SlideVerify实现滑块验证

作者gitee地址&#xff1a;https://gitee.com/monoplasty/vue-monoplasty-slide-verify 使用步骤&#xff1a; 1、安装插件 npm install --save vue-monoplasty-slide-verify 2、在main.js中进行配置 import SlideVerify from vue-monoplasty-slide-verify; Vue.use(SlideV…

Kafka 和 MQ 的区别

1.概述 1.1.MQ简介 消息中间件&#xff0c;其实准确的叫法应该叫消息队列&#xff08;message queue&#xff09;&#xff0c;简称MQ。其本质上是个队列&#xff0c;有FIFO的性质&#xff0c;即first in first out&#xff0c;先入先出。 目前市场上主流的MQ有三款&#xff…

61,【1】BUUCTF WEB BUU XSS COURSE 11

进入靶场 左边是吐槽&#xff0c;右边是登录&#xff0c;先登录试试 admin 123456 admiin# 123456 admin"# 123456 不玩了&#xff0c;先去回顾下xss 回顾完就很尴尬了&#xff0c;我居然用SQL的知识去做xss的题 重来 吐槽这里有一个输入框&#xff0c;容易出现存储型…

CAN 网络介绍

背景 在T-Box 产品开发过程中&#xff0c;我们离不开CAN总线&#xff0c;因为CAN总线为我们提供了车身的相关数据&#xff0c;比如&#xff0c;车速、油耗、温度等。用于上报TSP平台&#xff0c;进行国标认证&#xff1b;也帮助我们进行车身控制&#xff0c;比如车门解锁/闭锁…

【C++】在线五子棋对战项目网页版

目录 1.Websocket 1.1.Websocket的简单认识 1.2.什么是轮询呢&#xff1f; 1.3.websocket协议切换过程 1.4.websocketpp库常用接口认识 1.5.websocketpp库搭建服务器流程 1.6.websocketpp库搭建服务器 2.mysqlclient库-接口认识 3.项目模块的划分&#xff1a; 4.项目…

《鸿蒙 HarmonyOS 应用开发从入门到精通(第 2 版)》学习笔记 ——HarmonyOS 环境搭建之安装DevEco Studio

作为一款开发工具&#xff0c;除了具有基本的代码开发、编译构建及调测等功能外&#xff0c;DevEco Studio还具有如下特点&#xff1a; 高效智能代码编辑&#xff1a;支持Java、XML、ArkTS、JS、C/C等语言的代码高亮、代码智能补齐、代码错误检查、代码自动跳转、代码格式化、…

2025年最新深度学习环境搭建:Win11+ cuDNN + CUDA + Pytorch +深度学习环境配置保姆级教程

本文目录 一、查看驱动版本1.1 查看显卡驱动1.2 显卡驱动和CUDA对应版本1.3 Pytorch和Python对应的版本1.4 Pytorch和CUDA对应的版本 二、安装CUDA三、安装cuDANN四、安装pytorch五、验证是否安装成功 一、查看驱动版本 1.1 查看显卡驱动 输入命令nvidia-smi可以查看对应的驱…