Elasticsearch 完全指南

1. Elasticsearch基础知识

1.1 什么是Elasticsearch

Elasticsearch是一个基于Lucene的分布式、RESTful风格的搜索和数据分析引擎。它是一个开源的、高扩展的、分布式的全文搜索引擎,可以近乎实时地存储、检索数据。

Elasticsearch不仅仅是一个全文搜索引擎,它还可以用于以下场景:

  • 应用程序搜索
  • 网站搜索
  • 企业搜索
  • 日志处理和分析
  • 指标和容器监控
  • 应用性能监控
  • 地理空间数据分析和可视化
  • 安全分析
  • 业务分析

1.2 Elasticsearch的特点和优势

核心特点

  1. 分布式架构

    • 可以轻松扩展到上百台服务器,处理PB级数据
    • 自动管理集群节点的添加和移除
  2. RESTful API

    • 提供简单而统一的RESTful API
    • 支持JSON格式的数据交换
  3. 近实时搜索

    • 数据添加到索引后,通常在1秒内即可被搜索到
  4. 高可用性

    • 支持多节点集群,具备故障转移功能
    • 自动数据备份和恢复
  5. 文档导向

    • 以JSON文档为中心,支持复杂嵌套对象
    • 无需预定义模式,可动态调整
  6. 全文搜索能力

    • 强大的全文搜索功能
    • 支持多种语言和自定义分析器

主要优势

  1. 速度:利用倒排索引等技术实现高速搜索
  2. 可扩展性:横向扩展能力强,可根据负载添加节点
  3. 灵活性:无模式(Schema-less)设计,适应不同数据需求
  4. 易用性:简单的API和丰富的客户端库
  5. 分析能力:强大的聚合功能,可进行复杂数据分析
  6. 多语言支持:内置多种语言分析器
  7. 实时性:近实时索引和搜索

1.3 Elasticsearch的核心概念

基本术语

  1. 节点(Node):Elasticsearch的单个运行实例,即一个服务器

    • 主节点(Master Node):负责集群管理工作
    • 数据节点(Data Node):存储数据和执行数据相关操作
    • 协调节点(Coordinating Node):接收客户端请求,将请求分发到其他节点
    • 摄取节点(Ingest Node):预处理数据的节点
  2. 集群(Cluster):一个或多个节点共同工作的集合

    • 每个集群有唯一的名称
    • 默认集群名为"elasticsearch"
  3. 索引(Index):包含相似特性文档的集合

    • 类似关系型数据库中的"数据库"
    • 一个集群可以有多个索引
  4. 类型(Type):索引内部的逻辑分类/分区

    • 在Elasticsearch 7.0以后被弃用,一个索引只能有一个类型
    • 在Elasticsearch 6.x中,默认类型名为"_doc"
  5. 文档(Document):可被索引的基本信息单元

    • 以JSON格式表示
    • 每个文档有一个唯一的ID
    • 类似关系型数据库中的"行"
  6. 字段(Field):文档中包含的数据项

    • 类似关系型数据库中的"列"
    • 每个字段有特定的数据类型
  7. 分片(Shard):索引分成的多个部分

    • 主分片(Primary Shard):索引的原始分片,默认5个
    • 副本分片(Replica Shard):主分片的复制,默认1个
  8. 映射(Mapping):定义索引中字段的存储和索引方式

    • 定义字段类型、分析器等
    • 可自动生成或手动指定
  9. 分析器(Analyzer):处理文本的组件,用于索引和搜索

    • 由字符过滤器、分词器和词项过滤器组成
  10. 节点发现(Discovery):节点相互发现并加入集群的过程

1.4 Elasticsearch与关系型数据库的对比

关系型数据库Elasticsearch说明
数据库(Database)索引(Index)数据存储和组织的最高级别
表(Table)类型(Type)/无ES 7.0后一个索引只能有一个隐含类型
行(Row)文档(Document)基本数据单元
列(Column)字段(Field)数据项
模式(Schema)映射(Mapping)数据结构定义
主键(Primary Key)_id唯一标识符
索引(Index)倒排索引加速查询的数据结构
SQL查询DSL查询语言
SELECTGET检索数据操作
INSERTPUT/POST插入数据操作
UPDATEPUT/POST更新数据操作
DELETEDELETE删除数据操作
JOIN嵌套/父子文档关联数据处理
事务(Transaction)无完整事务支持数据一致性控制
表分区(Partition)分片(Shard)数据分布

主要区别

  1. 存储模型:关系型数据库基于行/列,Elasticsearch基于文档
  2. 查询语言:SQL vs JSON查询DSL
  3. 扩展方式:关系型垂直扩展,Elasticsearch水平扩展
  4. 事务:关系型支持ACID,Elasticsearch最终一致性
  5. 实时性:Elasticsearch近实时,关系型数据库实时或批处理
  6. 搜索能力:Elasticsearch专为搜索优化,支持复杂全文搜索

2. Windows环境下安装与配置Elasticsearch

2.1 下载安装包

  1. 访问Elasticsearch官方网站的下载页面:

    https://www.elastic.co/cn/downloads/elasticsearch
    
  2. 选择适合的版本(本教程以7.8.0版本为例)

  3. 下载Windows版本(ZIP或MSI格式)

    • ZIP格式:便于自定义安装,适合开发环境
    • MSI格式:更适合生产环境,支持作为系统服务安装

2.2 安装步骤详解

使用ZIP包安装

  1. 解压ZIP包

    • 将下载的elasticsearch-7.8.0-windows-x86_64.zip解压到指定目录
    • 例如:C:\elasticsearch-7.8.0
    • 注意:路径不应包含空格和特殊字符
  2. 目录结构

解压后的目录结构如下:

elasticsearch-7.8.0/
├── bin/          # 可执行文件目录
├── config/       # 配置文件目录
├── data/         # 数据存储目录
├── jdk/          # 内置JDK目录
├── lib/          # 依赖库目录
├── logs/         # 日志文件目录
├── modules/      # 模块目录
├── plugins/      # 插件目录
└── LICENSE.txt   # 许可证文件

2.3 配置文件详解

Elasticsearch的主要配置文件位于config目录下,主要包括:

elasticsearch.yml(核心配置文件)

# ======================== Elasticsearch配置 =========================
#
action.destructive_requires_name: true
# 节点名字
node.name: el_node_m1#设置对外服务的http端口,默认为9200
http.port: 9008#设置索引数据的存储路径
path.data: D:\Config\Elasticsearch\elasticsearch-7.8.0\data   #换成自己的路径
#设置日志文件的存储路径
path.logs: D:\Config\Elasticsearch\elasticsearch-7.8.0\data  #换成自己的路径# 关闭http访问限制
xpack.security.enabled: false# 增加新的参数,head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"# 跨域设置
#
http.cors.enabled: true                # 启用CORS
http.cors.allow-origin: "*"            # 允许的来源

2.4 启动与停止服务

ZIP安装方式

  1. 启动Elasticsearch

    • 打开命令提示符(CMD),进入Elasticsearch安装目录的bin文件夹
    • 执行以下命令:
      elasticsearch.bat
      
    • 首次启动可能需要允许防火墙访问
  2. 停止Elasticsearch

    • 按下Ctrl+C终止进程
  3. 验证安装

    • 打开浏览器,访问:http://localhost:9200
    • 如果安装成功,将看到类似以下JSON响应:
    {"name" : "node-1","cluster_name" : "my-application","cluster_uuid" : "xkpkbYrqQmOqvKCKl-2O3A","version" : {"number" : "7.17.0","build_flavor" : "default","build_type" : "zip","build_hash" : "bee86328705acaa9a6daede7140defd4d9ec56bd","build_date" : "2022-01-28T08:36:04.875279988Z","build_snapshot" : false,"lucene_version" : "8.11.1","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
    }
    

2.5 安装常用插件

Elasticsearch插件可以扩展其功能,以下是常用插件的安装方法:

安装IK中文分词器

IK分词器是最常用的中文分词插件,支持自定义词典。

  1. 下载与Elasticsearch版本匹配的IK分词器

    • 访问GitHub项目页面:https://github.com/medcl/elasticsearch-analysis-ik/releases
    • 下载与Elasticsearch版本相匹配的发行版,例如:elasticsearch-analysis-ik-7.8.0.zip
  2. 安装IK分词器

    • 创建插件目录:mkdir C:\elasticsearch-7.8.0\plugins\analysis-ik
    • 解压下载的ZIP文件到该目录
    • 重启Elasticsearc

安装拼音分词器

  1. 下载与Elasticsearch版本匹配的拼音分词器

    • 访问GitHub项目页面:https://github.com/medcl/elasticsearch-analysis-pinyin/releases
    • 下载与Elasticsearch版本相匹配的发行版,例如:elasticsearch-analysis-pinyin-7.8.0.zip
  2. 安装IK分词器

    • 创建插件目录:mkdir C:\elasticsearch-7.8.0\plugins\analysis-pinyin
    • 解压下载的ZIP文件到该目录
    • 重启Elasticsearc

2.6 安装Kibana可视化工具

Kibana是Elastic Stack的一部分,提供了强大的可视化和管理界面。

  1. 下载Kibana

    • 访问官方网站:https://www.elastic.co/cn/downloads/kibana
    • 选择与Elasticsearch版本相匹配的Windows版本(7.8.0)
  2. 解压缩

    • 将下载的zip文件解压到指定目录,例如:C:\kibana-7.8.0-windows-x86_64
  3. 配置Kibana

    • 编辑配置文件:C:\kibana-7.8.0-windows-x86_64\config\kibana.yml
    • 设置Elasticsearch URL(如果需要):
      elasticsearch.hosts: ["http://localhost:9200"]
      
  4. 启动Kibana

    • 打开命令提示符,进入Kibana目录
    • 执行命令:bin\kibana.bat
  5. 访问Kibana界面

    • 打开浏览器,访问:http://localhost:5601

3. Elasticsearch核心概念深入解析

3.1 分布式架构

Elasticsearch采用分布式架构,具有以下特点:

  1. 无中心设计

    • 集群中没有单点故障
    • 任何节点都可以加入集群或离开集群
    • 自动选举主节点
  2. 分片与副本机制

    • 数据分散存储在多个分片上
    • 每个分片可以有多个副本,提高可用性
  3. 自动发现与自愈

    • 节点间使用Zen Discovery相互发现
    • 自动处理节点故障和数据重新分配
  4. 水平扩展能力

    • 可以随时添加新节点扩展集群容量
    • 自动数据再平衡

集群状态颜色

Elasticsearch集群状态使用颜色表示:

  • 绿色:所有主分片和副本分片都正常运行
  • 黄色:所有主分片正常运行,但至少有一个副本分片不可用
  • 红色:至少有一个主分片不可用

3.2 集群与节点

集群类型
  1. 单节点集群

    • 开发环境常用
    • 无故障转移保护
  2. 多节点集群

    • 生产环境推荐
    • 提供数据冗余和负载均衡
节点角色

Elasticsearch节点可以承担一个或多个角色:

  1. 主节点(Master Node)

    • 管理集群范围的操作
    • 处理索引创建/删除
    • 节点添加/移除
    • 分片分配
  2. 数据节点(Data Node)

    • 存储数据
    • 执行数据相关操作(CRUD,搜索,聚合)
  3. 协调节点(Coordinating Node)

    • 接收客户端请求
    • 转发请求到相关节点
    • 汇总结果并返回给客户端
  4. 摄取节点(Ingest Node)

    • 预处理文档
    • 在索引前对文档进行转换
节点配置

elasticsearch.yml中配置节点角色:

# 主节点(不存储数据)
node.master: true
node.data: false
node.ingest: false# 数据节点(不参与主节点选举)
node.master: false
node.data: true
node.ingest: false# 协调节点(仅路由请求)
node.master: false
node.data: false
node.ingest: false# 摄取节点
node.master: false
node.data: false
node.ingest: true

3.3 索引与文档

索引结构

索引(Index)是文档的集合,在物理上由一个或多个分片组成。

索引命名规则

  • 必须全部小写
  • 不能包含以下字符:\, /, *, ?, ", <, >, |, , ,, #
  • 不能以-, _, +开头
  • 不能是以下名称:...
索引设置

创建索引时的主要设置项:

{"settings": {"number_of_shards": 3,          // 主分片数量"number_of_replicas": 1,        // 每个主分片的副本数"refresh_interval": "1s",       // 刷新间隔"analysis": {                   // 分析器设置"analyzer": {"my_analyzer": {"type": "custom","tokenizer": "standard","filter": ["lowercase"]}}}}
}
文档操作

文档(Document)是JSON格式的数据单元,每个文档必须有一个唯一的ID。

文档ID生成方式

  1. 自动生成(推荐):使用POST请求,由Elasticsearch生成
  2. 手动指定:使用PUT请求,明确指定ID

元数据字段

  • _index:文档所属索引
  • _id:文档唯一标识符
  • _version:文档版本号,用于乐观并发控制
  • _seq_no:序列号,递增值
  • _primary_term:主分片重新分配时递增的值

3.4 分片与副本

分片机制

分片(Shard)是Elasticsearch的核心分布式特性。

主要特点

  1. 每个分片是一个完整的Lucene索引
  2. 分片数在索引创建时确定,后续无法更改
  3. 分片可分布在集群中的多个节点上

分片类型

  1. 主分片(Primary Shard)

    • 存储索引数据的原始副本
    • 所有写操作先在主分片执行
    • 默认数量:1个(7.0以后)
  2. 副本分片(Replica Shard)

    • 主分片的复制品
    • 提供读取冗余或在主分片故障时提升为主分片
    • 默认数量:1个(即每个主分片有1个副本)
分片数量选择

分片数量的选择因素:

  1. 数据量:每个分片建议控制在20GB-40GB
  2. 节点数量:确保所有节点都有分片
  3. 查询性能:分片越多,单个查询需要协调的分片越多
  4. 硬件资源:节点的CPU和内存限制
分片分配

Elasticsearch自动管理分片分配:

  1. 新建索引:自动在节点间平衡分配分片
  2. 节点离线:自动将该节点上的主分片的副本提升为主分片
  3. 节点添加:自动将部分分片重新分配到新节点以平衡负载

3.5 映射与类型

映射(Mapping)定义了索引中的文档结构,类似关系数据库中的表结构。

映射类型
  1. 动态映射

    • Elasticsearch根据文档自动推断字段类型
    • 无需预先定义,适合快速开发
  2. 显式映射

    • 手动定义字段类型和特性
    • 提供更精确的控制,推荐生产环境使用
映射设置
{"mappings": {"properties": {"title": {"type": "text","analyzer": "standard"},"content": {"type": "text","analyzer": "english"},"date": {"type": "date","format": "yyyy-MM-dd"},"status": {"type": "keyword"},"price": {"type": "double"},"is_published": {"type": "boolean"}}}
}
字段参数

常用字段参数:

  1. analyzer:指定分析器
  2. search_analyzer:指定搜索时使用的分析器
  3. boost:字段权重
  4. coerce:是否尝试清理脏数据
  5. copy_to:将字段值复制到目标字段
  6. doc_values:是否启用列式存储
  7. dynamic:字段的动态映射策略
  8. eager_global_ordinals:是否预加载全局序号
  9. enabled:是否解析字段内容
  10. format:日期格式
  11. ignore_above:忽略超过指定长度的字符串
  12. ignore_malformed:忽略格式错误的值
  13. index:是否索引此字段
  14. index_options:索引控制参数
  15. fields:多字段参数,允许以不同方式索引同一字段
  16. norms:是否存储归一化因子
  17. null_value:NULL值的替代值
  18. position_increment_gap:多值字段中词条之间的位置增量
  19. store:是否单独存储字段值
  20. similarity:使用的相似度算法
  21. term_vector:是否存储词向量

3.6 分析器

分析器(Analyzer)负责将文本转换为词条(term),是全文搜索的核心组件。

分析器组成

分析器由三部分组成:

  1. 字符过滤器(Character Filters)

    • 对原始文本进行预处理
    • 例如:移除HTML标签、替换特定字符等
  2. 分词器(Tokenizer)

    • 将文本分割成词条
    • 例如:根据空格分词、根据语法规则分词等
  3. 词条过滤器(Token Filters)

    • 处理分词后的词条
    • 例如:转换为小写、删除停用词、添加同义词等
内置分析器

Elasticsearch提供多种内置分析器:

  1. Standard Analyzer

    • 默认分析器
    • 根据Unicode文本分割规则分词
    • 转换为小写
  2. Simple Analyzer

    • 按非字母字符分词
    • 转换为小写
  3. Whitespace Analyzer

    • 按空白字符分词
    • 不转换大小写
  4. Stop Analyzer

    • 与Simple Analyzer类似
    • 额外删除停用词
  5. Keyword Analyzer

    • 将整个字段作为一个词条
    • 不做任何处理
  6. Pattern Analyzer

    • 使用正则表达式分词
    • 默认按\W+(非字母数字)分割
  7. Language Analyzers

    • 针对特定语言的分析器
    • 例如:english、french、chinese等
自定义分析器
{"settings": {"analysis": {"char_filter": {"html_strip": {"type": "html_strip"}},"tokenizer": {"my_tokenizer": {"type": "standard"}},"filter": {"my_stopwords": {"type": "stop","stopwords": ["the", "a", "is"]}},"analyzer": {"my_custom_analyzer": {"type": "custom","char_filter": ["html_strip"],"tokenizer": "my_tokenizer","filter": ["lowercase", "my_stopwords"]}}}}
}

3.7 数据类型

Elasticsearch支持多种数据类型:

核心类型
  1. 文本类型

    • text:全文索引的字符串字段
    • keyword:不分析的字符串字段,适合过滤、排序和聚合
  2. 数值类型

    • long:64位有符号整数
    • integer:32位有符号整数
    • short:16位有符号整数
    • byte:8位有符号整数
    • double:双精度64位IEEE 754浮点数
    • float:单精度32位IEEE 754浮点数
    • half_float:半精度16位IEEE 754浮点数
    • scaled_float:缩放类型的浮点数
  3. 日期类型

    • date:日期类型,支持多种格式
  4. 布尔类型

    • boolean:true/false值
  5. 二进制类型

    • binary:Base64编码的二进制数据
  6. 范围类型

    • integer_range:整数范围
    • float_range:浮点数范围
    • long_range:长整数范围
    • double_range:双精度浮点数范围
    • date_range:日期范围
    • ip_range:IP地址范围
复杂类型
  1. 数组类型

    • 任何字段都可以包含多个值(数组)
    • 数组中的所有值必须是同一类型
  2. 对象类型

    • object:单个JSON对象
  3. 嵌套类型

    • nested:对象数组,每个对象都能被独立索引和查询
特殊类型
  1. 地理类型

    • geo_point:经纬度坐标
    • geo_shape:复杂形状(如多边形)
  2. 专用类型

    • ip:IPv4或IPv6地址
    • completion:自动完成建议
    • token_count:分析后的词条数量
    • attachment:附件类型(需插件)
    • percolator:存储查询本身

4. REST API详解

4.1 基本格式

Elasticsearch提供RESTful API,遵循以下格式:

<HTTP方法> /<索引>/<类型>/<ID>

其中:

  • HTTP方法:GET, POST, PUT, DELETE等
  • 索引:操作的索引名
  • 类型:操作的类型(7.0版本后只有_doc或不指定)
  • ID:文档的唯一标识符

请求和响应主体使用JSON格式。

4.2 索引操作API

创建索引
PUT /my_index
{"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"properties": {"title": { "type": "text" },"content": { "type": "text" },"tags": { "type": "keyword" }}}
}
获取索引信息
GET /my_index
检查索引是否存在
HEAD /my_index
修改索引设置
PUT /my_index/_settings
{"index": {"number_of_replicas": 2}
}
更新映射
PUT /my_index/_mapping
{"properties": {"new_field": { "type": "keyword" }}
}
删除索引
DELETE /my_index
索引别名

创建别名:

POST /_aliases
{"actions": [{ "add": { "index": "my_index", "alias": "my_alias" } }]
}

修改别名:

POST /_aliases
{"actions": [{ "remove": { "index": "my_index", "alias": "my_alias" } },{ "add": { "index": "my_index_v2", "alias": "my_alias" } }]
}

4.3 文档操作API

创建文档

指定ID:

PUT /my_index/_doc/1
{"title": "Elasticsearch Guide","content": "A complete guide to Elasticsearch","tags": ["search", "database"]
}

自动生成ID:

POST /my_index/_doc
{"title": "Elasticsearch Guide","content": "A complete guide to Elasticsearch","tags": ["search", "database"]
}
获取文档
GET /my_index/_doc/1

仅返回特定字段:

GET /my_index/_doc/1?_source=title,tags
检查文档是否存在
HEAD /my_index/_doc/1
更新文档

全量更新:

PUT /my_index/_doc/1
{"title": "Updated Elasticsearch Guide","content": "An updated guide to Elasticsearch","tags": ["search", "database", "guide"]
}

部分更新:

POST /my_index/_update/1
{"doc": {"title": "Updated Elasticsearch Guide"}
}

使用脚本更新:

POST /my_index/_update/1
{"script": {"source": "ctx._source.tags.add(params.new_tag)","params": {"new_tag": "tutorial"}}
}
删除文档
DELETE /my_index/_doc/1

4.4 搜索API

基本搜索

搜索所有文档:

GET /my_index/_search

分页搜索:

GET /my_index/_search
{"from": 0,"size": 10
}
查询字符串搜索
GET /my_index/_search?q=title:elasticsearch
查询DSL搜索
GET /my_index/_search
{"query": {"match": {"title": "elasticsearch"}}
}
复合查询
GET /my_index/_search
{"query": {"bool": {"must": [{ "match": { "title": "elasticsearch" } }],

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

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

相关文章

Python 3 与 MySQL 数据库连接:mysql-connector 模块详解

Python 3 与 MySQL 数据库连接&#xff1a;mysql-connector 模块详解 概述 在Python 3中&#xff0c;与MySQL数据库进行交互是一个常见的需求。mysql-connector是一个流行的Python模块&#xff0c;它提供了与MySQL数据库连接和交互的接口。本文将详细介绍mysql-connector模块…

SQL:CASE WHEN使用详解

文章目录 1. 数据转换与映射2. 动态条件筛选3. 多条件分组统计4. 数据排名与分级5. 处理空值与默认值6. 动态排序 CASE WHEN 语句在 SQL 中是一个非常强大且灵活的工具&#xff0c;除了常规的条件判断外&#xff0c;还有很多巧妙的用法&#xff0c;以下为你详细总结&#xff1a…

【字符设备驱动开发–IMX6ULL】(二)Linux 设备号

【字符设备驱动开发–IMX6ULL】&#xff08;二&#xff09;Linux 设备号 文章目录 【字符设备驱动开发–IMX6ULL】&#xff08;二&#xff09;Linux 设备号1 设备号的组成2.设备号的分配 1 设备号的组成 为了方便管理&#xff0c;Linux 中每个设备都有一个设备号&#xff0c;设…

【字符设备驱动开发–IMX6ULL】(一)简介

【字符设备驱动开发–IMX6ULL】&#xff08;一&#xff09;简介 一、Linux驱动与裸机开发区别 1.裸机驱动开发回顾 ​ 1、底层&#xff0c;跟寄存器打交道&#xff0c;有些MCU提供了库。 spi.c&#xff1a;主机驱动&#xff08;换成任何一个设备之后只需要调用此文件里面的…

YOLOv8+ Deepsort+Pyqt5车速检测系统

该系统通过YOLOv8进行高效的目标检测与分割&#xff0c;结合DeepSORT算法完成目标的实时跟踪&#xff0c;并利用GPU加速技术提升处理速度。系统支持模块化设计&#xff0c;可导入其他权重文件以适应不同场景需求&#xff0c;同时提供自定义配置选项&#xff0c;如显示标签和保存…

蓝桥杯嵌入式学习笔记

用博客来记录一下参加蓝桥杯嵌入式第十六届省赛的学习经历 工具环境准备cubemx配置外部高速时钟使能设置串口时钟配置项目配置 keil配置烧录方式注意代码规范头文件配置 模块ledcubemx配置keil代码实现点亮一只灯实现具体操作的灯&#xff0c;以及点亮还是熄灭 按键cubemx配置k…

ARCGIS PRO SDK VB2022 图层要素类类型判断

arcgis pro 常见要素类类型有以下几种&#xff1a; FeatureLayer ——要素图层&#xff08;矢量数据&#xff09; RasterLayer ——栅格图层 MapImageLayer ——地图图像图层 VectorTileLayer ——矢量切片图层 SceneLayer …

【hadoop】远程调试环境

根据上一节&#xff0c;我们已经安装完成hadoop伪分布式环境 hadoop集群环境配置_jdk1.8 441-CSDN博客 还没安装的小伙伴可以看看这个帖子 这一节我们要实现使用vscode进行远程连接&#xff0c;并且完成java配置与测试 目录 vscode 配置远程 安装java插件 新建java项目 …

Java版Manus实现来了,Spring AI Alibaba发布开源OpenManus实现

此次官方发布的 Spring AI Alibaba OpenManus 实现&#xff0c;包含完整的多智能体任务规划、思考与执行流程&#xff0c;可以让开发者体验 Java 版本的多智能体效果。它能够根据用户的问题进行分析&#xff0c;操作浏览器&#xff0c;执行代码等来完成复杂任务等。 项目源码及…

【Linux网络与网络编程】02.初识Socket编程

1. 数据传输的目的 前一篇文章中我们讲解了网络传输的流程&#xff0c;那么网络传输的目的是什么呢&#xff1f;难道我们只是将数据从一台主机传输到另一台主机吗&#xff1f; 当然不是的&#xff01;因为数据是给人用的。比如&#xff1a;聊天是人在聊天&#xff0c;下载是人…

电脑连不上手机热点会出现的小bug

一、问题展示 注意: 不要打开 隐藏热点 否则他就会在电脑上 找不到自己的热点 二、解决办法 把隐藏热点打开即可

CUDA专题3:为什么GPU能改变计算?深度剖析架构、CUDA®与可扩展编程

1. 简介 1.1. 使用 GPU 的优势 图形处理器(GPU)在相近的成本和功耗范围内,能够提供比中央处理器(CPU)更高的指令吞吐量和内存带宽。许多应用程序利用这些优势,在 GPU 上的运行速度远超 CPU(参见《GPU 应用》)。其他计算设备(如 FPGA)虽然能效也很高,但其编程灵活性…

Linux输入系统应用编程

什么是输入系统 Linux 输入系统是处理用户输入设备(如键盘、鼠标、触摸屏、游戏手柄等)的软件架构。在应用编程层面&#xff0c;它提供了与这些输入设备交互的接口。 主要组成部分 输入设备驱动层&#xff1a;直接与硬件交互的驱动程序 输入核心层&#xff1a;内核中的输入子…

StarRocks BE宕机排查

StarRocks BE宕机排查 排查是否OOM dmesg -T|grep -i oom #排查是否oom原因&#xff1a; 2.X版本OOM原因 BE 的配置文件 (be.conf) 中 mem_limit 配置不合理&#xff0c;需要配置mem_limit(机器总内存-其他服务占用内存-1~2g(系统预留)) 比如机器内存40G&#xff0c;上面有…

逻辑回归(Logistic Regression)模型的概率预测函数

以二分类问题为例&#xff0c;常见的损失函数有 负对数似然损失(neg log-likelihood loss)&#xff0c;交叉熵损失(cross entropy loss)&#xff0c;deviance loss指数损失(exponential loss)。 前三者虽然名字不同&#xff0c;但却具有相同的表达形式。此外&#xff0c;neg …

函数式组件中的渲染函数 JSX

在 Vue.js 和 React 等现代前端框架中&#xff0c;函数式组件已成为一种非常流行的设计模式。函数式组件是一种没有内部状态和生命周期方法的组件&#xff0c;其主要功能是接受 props 并渲染 UI。随着这些框架的演进&#xff0c;渲染函数和 JSX&#xff08;JavaScript XML&…

Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用))

Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用&#xff09;) 文章目录 场景需求参考资料思路期待效果 实现方案源码流程分析和思路实现DefaultAppActivityHandheldDefaultAppFragmentHandheldDefaultAppPreferenceFragmentDefaultAppChildFragmentDefaul…

Qt下载模板到本地文件内容丢失问题

上源码 关键点已标注在源码中 A, B… // 保存的文件路径后缀QString dateTime Myapp::getCurrentTimeDescYMDHms().replace(" ", "").replace("-", "").replace(":", "");// 临时文件名称QString newFileName Q…

【数学建模】动态规划算法(Dynamic Programming,简称DP)详解与应用

动态规划算法详解与应用 文章目录 动态规划算法详解与应用引言动态规划的基本概念动态规划的设计步骤经典动态规划问题1. 斐波那契数列2. 背包问题3. 最长公共子序列(LCS) 动态规划的优化技巧动态规划的应用领域总结 引言 动态规划(Dynamic Programming&#xff0c;简称DP)是一…

蓝桥杯备考------>双指针(滑动窗口)

来看哈我们这道例题 我们第一种想法应该就是暴力求解&#xff0c;枚举每个子数组 当我们枚举第一个数的时候&#xff0c;我们要从第一个数开始挨个枚举每个结尾 如图&#xff0c;以第一个数开头的最长不重复数我们就枚举完了 然后我们让两个指针全部到第二个数 再枚举第二个…