ElasticSearch7.8.0Docker安装及入门最基本操作

Docker安装ElasticSearch8.X docker安装elasticsearch8.X完整详细教程 在新安装的情况下,您需要设置一个初始的内置用户以及相关的登录凭据。表示 指定 Elasticsearch 节点在单节点模式下运行,即启动一个独立的 Elasticsearch 实例而不是一个多节点集群。端口:是用于Elasticsearch节点之间的内部通信和数据传输的端口,也称为传输层端口。端口:用于HTTP REST API与Elasticsearch进行通信和操作的端口。表示 es-head访问端口,开启主机与容器端口映射。端口,访问宿主机端口的时候会映射到对应容器端口。容器启动之后使用浏览器访问。 阅读详情

Docker 安装 ElasticSearch

拉取镜像
# 最新版本7,8.0
docker pull elasticsearch:7.8.0
启动集群
# 基本启动命令
# -e "discovery.type=single-node" \  单节点集群
# -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ 制定运行参数,不然如果机器内存太小,启动后会非常卡顿
# --name 起个别名
docker run -p 9200:9200 -p 9300:9300 --name es7.8 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-d elasticsearch:7.8.0

# 查看集群健康状态
GET /_cat/health?v
# 查看节点健康状态
GET /_cat/nodes?v
# 查看索引信息
GET /_cat/indices?v
进入容器
# 进入容器中
docker exec -it es7.8 /bin/bash
# 查看文件夹及权限
[root@87e29ba6ef1e elasticsearch]# ll
total 588
-rw-r--r--  1 elasticsearch root  13675 Jun 14 19:34 LICENSE.txt
-rw-r--r--  1 elasticsearch root 544318 Jun 14 19:37 NOTICE.txt
-rw-r--r--  1 elasticsearch root   8165 Jun 14 19:34 README.asciidoc
drwxr-xr-x  2 elasticsearch root   4096 Jun 14 19:39 bin
drwxrwxr-x  1 elasticsearch root   4096 Jul  9 04:31 config #775权限
drwxrwxr-x  3 root          root   4096 Jul  9 04:29 data #775权限
drwxr-xr-x  1 elasticsearch root   4096 Jun 14 19:38 jdk 
drwxr-xr-x  3 elasticsearch root   4096 Jun 14 19:38 lib
drwxrwxr-x  1 elasticsearch root   4096 Jul  9 04:31 logs #775权限
drwxr-xr-x 47 elasticsearch root   4096 Jun 14 19:39 modules
drwxr-xr-x  2 root          root   4096 Jul  9 04:17 plugins #775权限
可在启动容器的时候指定数据卷映射
docker run -p 9200:9200 -p 9300:9300 --name es7.8 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v /dockerfile/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /dockerfile/elasticsearch/data:/usr/share/elasticsearch/data \
-v /dockerfile/elasticsearch/logs:/usr/share/elasticsearch/logs \
-d elasticsearch:7.8.0
# 做映射之前赋予文件夹相应权限,默认创建的文件夹权限就是755,所	吃   以/dockerfile/elasticsearch/plugins不用改权限
chmod -R 775 /dockerfile/elasticsearch/data
chmod -R 775 /dockerfile/elasticsearch/logs

# data和logs文件夹刚开始是空的,数据是启动时自己加进去的,所以可以做映射,
# plugins文件夹刚开始是没有安装插件的,也是空的,所以也可以做映射
# config文件夹是配置文件,不能用空目录做映射,否则启动直接退出,除非自己创建的文件夹中有相关配置文件
# 可以先进入容器,讲config文件夹拷贝出来,得到一份配置文件
-v /dockerfile/elasticsearch/config:/usr/share/elasticsearch/config \
插入一些数据
# 官方提供的account.json数据,包含1000条数据
wget https://raw.githubusercontent.com/elastic/elasticsearch/master/docs/src/test/resources/accounts.json#
# 每个Document内容
{
    "account_number": 0,
    "balance": 16623,
    "firstname": "Bradshaw",
    "lastname": "Mckenzie",
    "age": 29,
    "gender": "F",
    "address": "244 Columbus Place",
    "employer": "Euron",
    "email": "bradshawmckenzie@euron.com",
    "city": "Hobucken",
    "state": "CO"
}
# 使用以下 _ bulk 批量操作请求将账户数据存储到到bank索引中:
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
# 查看索引状态
curl "localhost:9200/_cat/indices?v"
Docker 安装 Kkibana
# 拉取镜像
# kibana版本必须和elasticsearch版本保持一致
docker pull kibana:7.8.0

# 启动容器
# YOUR_ELASTICSEARCH_CONTAINER_NAME_OR_ID 正在运行的ES容器ID或name
docker run --link YOUR_ELASTICSEARCH_CONTAINER_NAME_OR_ID:elasticsearch -p 5601:5601 {docker-repo}:{version}
docker run --link es7.8:elasticsearch -p 5601:5601 -d kibana:7.8.0
安装IK分词器
# Ik分词器版本要和ES和Kibana版本保持一致

# 进入容器
docker exec -it elasticsearch /bin/bash
#此命令需要在容器中运行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip
# 退出容器,重启容器
docker restart elasticsearch

索引的操作

创建索引

# 创建一个index,名为twitter
PUT /twitter
# 查看索引状态
GET /_cat/indices?v

在创建索引时,可以指定以下内容:

  • Settings for the index 索引的设置
  • Mappings for fields in the index 索引中字段的映射
  • Index aliases 索引别名

创建的每个索引都可以有特定的相关设置,在主体中定义:

PUT /twitter
{
    "settings" : {
        "index" : {
            "number_of_shards" : 3, 
            "number_of_replicas" : 2 
        }
    }
}
# _ shards 的默认值是1
# _ replica 的默认值是1(即每个主碎片有一个副本)

#或者更简单,不必在设置部分中显式指定索引部分
PUT /twitter
{
    "settings" : {
        "number_of_shards" : 3,
        "number_of_replicas" : 2
    }
}

创建索引 API 允许提供一个映射定义,映射定义用于包含类型名称

PUT /test
{
    "settings" : {
        "number_of_shards" : 1
    },
    "mappings" : {
        "properties" : {
            "field1" : { "type" : "text" } 
        }
    }
}

删除索引

DELETE /twitter
# 查看索引状态
GET /_cat/indices?v

查看索引

GET /twitter

文档的操作

查询文档

查看文档类型
GET /bank/_mapping
使用 match_all查询全部
# 查询索引bank中的全部文档
GET /bank/_search
{
  "query": { "match_all": {} }
}
使用sort指定排序规则,默认按匹配度(得分score)排序
# 检索银行索引中的所有文档,按account_number字段排序 asc 是升序,desc是降序
GET /bank/_search
{
  "query": { "match_all": {} },
  "sort": [
    { "account_number": "asc" }
  ]
}

# 查找指定范围的文档
# 下面的请求会得到从第10条文档到第19条文档的结果:
GET /bank/_search
{
  "query": { "match_all": {} },
  "sort": [
    { "account_number": "asc" }
  ],
  "from": 10,  # 起始位置
  "size": 10   # 大小/数目
}

# 默认情况下,响应的命中部分hits包含与搜索条件匹配的前10个文档:
# took – 运行查询需要多长时间(毫秒)
# timed_out – 搜寻请求是否超时
# _shards – 搜索了多少碎片,并分别列出成功、失败或跳过的碎片数量,创建索引时默认分片数是5
# max_score – 找到的所有文档中最相关文档(匹配程度最高)的分数
# hits.total.value - 找到多少相符的文档
# hits.sort -  文档的排序位置(按哪个字段排序,不指定排序规则时按相关性得分排序)
# hits._score -  文件的相关性得分(不适用于使用match_all)
{
  "took" : 63,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {                        # 命中部分
    "total" : {
        "value": 1000,              # 查到的总数
        "relation": "eq"
    },
    "max_score" : null,
    "hits" : [ {
      "_index" : "bank",
      "_type" : "_doc",
      "_id" : "0",
      "sort": [0],
      "_score" : null,
      "_source" : {"account_number":0,"balance":16623,"firstname":"Bradshaw","lastname":"Mckenzie","age":29,"gender":"F","address":"244 Columbus Place","employer":"Euron","email":"bradshawmckenzie@euron.com","city":"Hobucken","state":"CO"}
    }, {
      "_index" : "bank",
      "_type" : "_doc",
      "_id" : "1",
      "sort": [1],
      "_score" : null,
      "_source" : {"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"amberduke@pyrami.com","city":"Brogan","state":"IL"}
    }, ...
    ]
  }
}

# 搜索并返回指定字段内容,使用_source表示,例如只返回account_number和balance两个字段内容:
GET /bank/_search
{
  "query": { "match_all": {} },
  "_source": ["account_number", "balance"]
}
使用match,单词查询
# 会查出字所有文档中,address字段包含 mill 【或者】 lane 的文档
GET /bank/_search
{
  "query": {
    "match": {
      "address": "mill lane"
    }
  }
}
# 对于数值类型match操作使用的是精确匹配,对于文本类型使用的是模糊匹配;
使用match_phrase,短语搜索
# 只会查出字所有文档中,address字段包含 "mill lane" 的文档
GET /bank/_search
{
  "query": {
    "match_phrase": {
      "address": "mill lane"
    }
  }
}
bool 组合多个查询条件
  • must match 必须匹配
  • should match 应该匹配(一般用于组合 或 关系)
  • must not 必须不满足,相当于排序filter
  • 布尔查询中的每个 must、 should 和 must _ not 元素都称为查询子句。文档满足每个 必须或应该条款 中的标准的程度决定了文档的相关性得分。得分越高,文档就越符合你的搜索条件。默认情况下,Elasticsearch 返回按照相关性得分排序后的文档。
# 在bank索引中搜索40岁客户(age=40)的账户,但不包括住在爱达荷州的任何人,州名是ID (state=ID):
GET /bank/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "age": "40" } }
      ],
      "must_not": [
        { "match": { "state": "ID" } }
      ]
    }
  }
}
# 还可以借助 must_not 显示地指定筛选条件
# 使用范围过滤器filter将结果限制为余额(balance字段)在 $20,000和 $30,000之间的帐户。
# gte是大于等于,gt是大于;lte是小于等于,lt是小于
GET /bank/_search
{
  "query": {
    "bool": {
      "must": { "match_all": {} },
      "filter": {
        "range": {
          "balance": {
            "gte": 20000,
            "lte": 30000
          }
        }
      }
    }
  }
}

# should表示满足其中任意一个,搜索address字段中包含mill或者lane的文档;
GET /bank/_search
{
  "query": {
    "bool": {
      "should": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}
term精确值查找

term 查询, 可以用它处理数字(numbers)、布尔值(Booleans)、日期(dates)以及文本(text,不推荐)。

term 查询会查找我们指定的精确值。作为其本身, term 查询是简单的。它接受一个字段名以及我们希望查找的数值:

{
    "term" : {
        "price" : 20
    }
}

通常当查找一个精确值的时候,我们不希望对查询进行评分计算。只希望对文档进行包括或排除的计算,所以我们会使用 constant_score 查询以非评分模式来执行 term 查询并以一作为统一评分。

最终组合的结果是一个 constant_score 查询,它包含一个 term 查询:

GET /bank/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "age": {
            "value": 20
          }
        }
      }
    }
  }
}

默认情况下,Elasticsearch 作为分析的一部分更改text类型字段的值。这可能使查找文本字段值的精确匹配变得困难。若要搜索文本字段值,请使用match查询。

默认情况下,Elasticsearch 会在分析期间更改文本字段的值。例如,默认的标准分析器更改文本字段值如下:

  • Removes most punctuation 删除大部分标点符号
  • Divides the remaining content into individual words 将剩下的内容分成单独的单词,称为tokens
  • Lowercases the tokens 小写tokens
# 创建一个名为my_index的索引,其中 full _ text 字段为文本类型。
PUT my_index
{
    "mappings" : {
        "properties" : {
            "full_text" : { "type" : "text" }
        }
    }
}
# 在插入一个值为 Quick Brown Foxes! 的文档。
PUT my_index/_doc/1
{
  "full_text":   "Quick Brown Foxes!"
}
# 因为full_text字段是一个文本字段,Elasticsearch 在分析期间将 Quick Brown Foxes! 更改为[ Quick,Brown,fox ]。
# 使用term搜索这条文档
GET my_index/_search?pretty
{
  "query": {
    "term": {
      "full_text": "Quick Brown Foxes!"
    }
  }
}
# 因为full_text字段不再包含确切的术语 Quick BrwnFoxes! ,术语查询搜索不返回任何结果。

增加文档

# 指定索引customer,指定id,可选,若不指定则随机生成,_doc是默认参数,可不写
PUT /bank/_doc/1
{
  "email": "test@test.com"
}

修改文档

POST /< index >/_ update/< _ id >

,目标索引的名称。默认情况下,如果索引不存在,则自动创建索引。

<_id> 必需,字符串,文档更新的唯一标识符

# 指定索引test,指定id,可选,若不指定则随机生成,_doc是默认参数,可不写
# 插入一条文档
PUT /test/_doc/1
{
    "age" : 10
}
# 查看
GET /test/_doc/1
# 修改
POST /test/_update/1
{
  "doc" :{
    "age":"20"
  }
}
# 查看
GET /test/_doc/1

删除文档

DELETE /<index>/_doc/<_id>
# 删除bank索引中id为1的文档
DELETE /bank/_doc/1

PS

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:

https://cloud.tencent.com/developer/support-plan?invite_code=2od2cppsrkao8

Docker安装ElasticSearch8 相反,它采用了内置安全特性,并引入了超级用户(superuser)角色和内置用户(built-in users)概念来管理访问控制。在新安装的情况下,您需要设置一个初始的内置用户以及相关的登录凭据。表示 指定 Elasticsearch 节点在单节点模式下运行,即启动一个独立的 Elasticsearch 实例而不是一个多节点集群。访问,并且不需要账号密码鉴权,这个设置看个人情况,如果是生产环境建议开始开启 https和账号密码鉴权。端口,访问宿主机端口的时候会映射到对应容器端口。,这样就可以直接 使用。 阅读详情

相关推荐

ES(Elasticsearch)的docker安装部署教程

需要手动将docker中的es四个目录同步到宿主机上。1.1 拉取docker镜像。1.2 创建es挂载目录。1.4 桥接网络节点配置。3、logstash部署。1.3 开放防火墙端口。1.5 容器实例启动。2、Kibana部署。

qq_33034733的博客 1万+

ElasticSearch——Docker安装ElasticSearch和Kibana

说明:由于是用docker安装,所以要确保已安装docker并docker环境可用。docker安装步骤:https://wanli.blog.csdn.net/article/details/121445768。

万里顾一程的博客 2085

docker部署elasticsearch8

在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。将临时kibana节点中的配置拷贝到/opt/soft/docker/elasticsearch/kibana中。如果在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。前面是kibana容器中的地址,后面是物理服务器上的地址。

2401_87198316的博客 2044

windown下安装Elasticsearch7.8.0 版详细教程

Elasticsearch 官网:https://www.elastic.co/cn/打开浏览器(推荐使用谷歌浏览器),输入地址:http://localhost:9200。打开bin目录,下面有一个elasticsearch.bat,双击打开即可。下载好之后,解压压缩包,会得到一个文件夹。

weixin_42460596的博客 685

docker 搭建es集群8.9.0

docker搭建es8.9.0集群实操

baobao315061665的博客 1232

Elasticsearch8 - Docker安装Elasticsearch8

用户可以在这里配置自己的扩展停止词字典。用户可以在这里配置远程扩展停止词字典。IK Analyzer 扩展配置。用户可以在这里配置自己的扩展字典。用户可以在这里配置远程扩展字典。

2501_90252601的博客 1031

Elasticsearch7.8.0版本进阶——IK中文分词器

Elasticsearch7.8.0版本进阶——IK中文分词器

小志的博客 2340

《联邦学习实战》杨强 读书笔记十四——构建公平的大数据交易市场

当数据具有资产属性之后,数据便可以直接或者间接地为公司、为社会创造价值和收益,并且可以作为一种特殊的商品在市场中进行交易。 与传统的商品交易相比,数据资产交易的市场前景更广阔,但同时也面临着很多的挑战,主要包括: 数据的质量、价格如何定义 在合法合规的前提下,数据的交易如何确保不会泄露用户的隐私 如何构建合理的激励机制来鼓励更多的参与方加入数据交易市场中 大数据交易 数据交易的定义 数据交易是指一种对数据进行买卖的行为,大数据交易由三方共同参与,分别为数据提供方、大数据交易平台和数据需求方:

IEEE802_11的博客 3433

ElasticSearch7.8环境搭建

文章目录ElasticSearch7.8环境搭建一、前言二、配置说明三、环境安装3.1 windows环境部署3.1.1 部署步骤3.1.2 ElasticSearch安装为Windows服务3.1.3 Kibana安装3.1.4 elasticsearch-analysis-ik安装3.1.5 ElasticSearch-head插件安装(待完善)3.2 centos环境部署3.2.1 部署步骤3.2.2 修改配置文件3.2.3 启动ES3.2.4 启动报错解决3.2.4.1 报错13.2.4.2 报错2

贾继康的博客 1506

手把手教你用U盘制作Win11启动盘:从PE工具到系统安装全流程

本文提供了一份详尽的Windows 11启动盘制作与系统安装全流程指南。从选择合适的U盘和PE工具开始,重点讲解了如何正确制作包含EFI引导分区的启动盘,并详细演示了在PE环境下进行GPT分区、使用CGI工具安装系统镜像,以及首次启动后的关键设置步骤,帮助用户轻松完成从零到一的系统安装。

weixin_28475533的博客 1289

LSTM预测股票数据---数据预处理

# 导入相应的模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt import tensorflow as tf # 获取训练集 def get_train_data(data,batch_size = 60 ,time_step = 20,train_begin = 0,train_end = 58...

qq_35358021的博客 3360

docker安装Elasticsearch7.8.0+Kibana7.8.0+FileBeat7.8.0

docker安装Elasticsearch7.8.0+Kibana7.8.0+FileBeat7.8.0 一、设置参数 sudo vim /etc/sysctl.conf vm.max_map_count=262144 一、获取elastic-certificates.p12 拉取镜像:docker pull docker.elastic.co/elasticsearch/elasticsearch:7.8.0 启动:sudo docker run -dit --name=es 镜像Id/.

weixin_41082262的博客 562

将机器人urdf模型转换为Mujoco环境下的mjcf模型

在使用gym环境进行人形模型站立训练的过程中,我想要将之前ros环境下的机器人urdf模型导入到mujoco环境下,这时候就需要将urdf模型转换为mujoco专用的mjcf模型。-AzureLoong.urdf是机器人模型(我这里使用青龙的模型);--custom_robot.xml是转换完成之后的机器人模型的名字和格式;包要求 Python 版本必须是 3.11 或更高),保证自己的其他训练环境和依赖不被干扰。首先将meshes文件迁移到需要输出的目录下,然后再运行转换命令。最后就可以成功输出了。

weixin_44334573的博客 3756

Docker上安装部署Elasticsearch(ES)详细教程

Docker部署ES,Kibana和IK分词器

djdjfjf1的博客 1万+

雷达系统仿真——非相参累积和相参累积检测

非相参累积和相参累积检测 在雷达回波检测中,在特殊情况下,才会根据单个脉冲来进行检测判决。通常,雷达会从每个目标接收几个到几百个成串脉冲,在做出判决之前,要先对脉冲串进行处理。对脉冲串进行处理的方法有5种: 相参累积(Coherent Integration); 非相参累积(Nocoherent Integration); 二进制累积; 累计检测; 反馈累积器。 1 非相参累积 也叫“检波后累积”,或者“视频累积”(Video Integration),比检波前累积更容易完成,因为不需要保存回波的相位。

little_soldier的专栏 1万+

window下迁移SVN仓库到新的windows服务器

window下迁移SVN仓库到新的windows服务器

Bertram的博客 4692

Elasticsearch8 - Docker安装Elasticsearch8.12.2

本文介绍了 elasticsearch 8.12.2 的安装和 ik 分词器的安装

王谷雨的博客 1766

乐企增值税及附加税费(一般纳税人适用)申报表填报能力说明文档V3.009

申报表填报,是指企业在自有业务系统中将算税结果数据按预填规则要求加工汇总后,进行申报表填报的过程。申报表填报前对纳税申报所需的前提条件进行校验。校验通过后,应用前序算税结果数据及预填规则进行纳税申报表预填,生成申报表数据。申报表数据通过申报业务规则校验后,经纳税人确认即完成申报表填报业务。

记录点滴 345

ElasticSearch8.8.2快速入门(一)

根据用户需求和一定算法,运用特定的策略检索出指定信息反馈给用户的一门检索技术。

不睡觉的小孩,欠悠。 1670

DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密

DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ​。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。

weixin_43199439的博客 2099

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Docker安装ElasticSearch/ES 8.9.0

略

sayyy的专栏 5161

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Elasticsearch-7.8.0安装最全(mac、Linux、window、centos7.5集群、docker)

Elasticsearch安装localhost、Kibana安装localhost适用于mac、window、linux单机测试。

2301_79479951的博客 1922

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

基于Docker安装Elasticsearch 7.10

基于Docker安装Elasticsearch【保姆级教程、内含图解】 安装Kibana 离线安装分词器

平凡的梦 2082

Elasticsearch入门(四):使用docker搭建Elasticsearch 7.0.0 集群,安装head插件

引子 在上一篇文章Elasticsearch入门(三):Elasticsearch 7.0.0 集群搭建中,我讲了如何在CentOS 7.6环境下搭建 Elasticsearch 7.0.0 集群。本文呢,我将继续讲一讲,如何使用docker搭建集群。在本文中,docker相关的知识我不详细讲解,有疑问的同学请自行百度或留言给我。此外,如果是ES安装、运行,或者Node.js的安装、head插件...

蛋壳城堡 3914
上一篇: ElasticSearch入门项目--仿京东搜索(关键字高亮)
下一篇: JSR303校验+统一异常处理细节+同一字段多个校验注解的结果如何处理
wwang_dev
博客等级 码龄7年 27粉丝 76原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值