Python笔记:ElasticSearch使用简介

ES索引重建--使用python elasticsearch ES索引重建–使用python elasticsearch在ES集群的使用过程中,有时会遇到需要重新建立mapping的情况,通常,我们会选择建立一个新的索引,然后将数据从原索引迁移到新索引的方式来重建需要的mapping。之前也有看到过通过Elasticsearch 的Java API 调用scan&scroll 和bulk 的方法,无奈Java 太久没有上手了~~ 所以,找了一下,发现有Pyt 阅读详情

0. 引言

这里源于工作中的需要,需要对历史数据进行记录,并基于此进行一个查重操作。

最终的方案确定为通过维护一个es数据表来进行历史数据的一个记录以及查询操作。

但是,我却不会相关的es数据库操作,因此,也是花了一两天在工作中初步学习了一下es数据库的基础使用方法。

因此,这里就大致梳理一下es数据库使用的一些基础知识,也算是对于我自己的一个知识积累吧。

当然,由于我本人并不是做数据库的,因此对于其中很多的内容理解仅仅只停留在使用的层面,对于es数据库本质的理解是几乎完全苍白的,仅仅通过参考链接中的一些博客或者官方文档有一定的粗浅的理解而已。

如果有读者想要在这一领域内深耕的话,还是请以参考链接中的官方文档为主进行学习。

1. es数据库入门

1. es简介

es数据库是在sql数据库之后新提出的一种非关系型数据库,它支持对于全文内容的索引,因此可以支持对于其中存储的数据的非完全匹配方式的快速搜索。

2. es安装与启动

我们基于官网的引导在本地尝试一下es数据库以及kibana的安装与使用。

这部分内容事实上官网上的内容是比较明确的,可以参考下述链接中的步骤进行安装和启动即可:

在安装完相应的安装包之后,我们只需要运行下述命令即可启动es

bin/elasticsearch

启动elasticsearch之后界面上会显示一个外部访问的ip,默认为http://127.0.0.1:9200,在浏览器上打入这个ip就可以查看当前的elasticsearch的状态。

3. kibana简介

kibana为官方配套的一个针对es数据库的可视化数据查看工具。

我们同样像es那样先下载kibana,解压之后运行下述命令即可启动kibana:

bin/kibana

同样的,启动了kibana之后命令窗口中也会给出一个外部访问ip(默认为http://127.0.0.1:5601/),在浏览器中输入即可对数据表进行查看。

我们可以在dev工具当中直接测试es库的请求命令(如下图所示):

在这里插入图片描述

我们也可以直接在kibana的dev tools当中去检索当前数据库中的数据表(如下图所示):

在这里插入图片描述

当然,每一张es库中的表格需要先在kibana当中进行注册,这一点可以通过上图中的create index pattern方法进行添加,但是直接在dev tools进行操作的话就不需要了,可以直接进行访问。

2. es数据库使用基础

es数据库使用的基本逻辑就是:

  1. 使用elasticsearch库通过host ip连接es数据库;
  2. 通过表名(index_name)定位到es数据库中某张具体的表,然后对数据进行操作。

给出基础的操作样例如下:

from elasticsearch import Elasticsearch

HOST = '127.0.0.1:9200' # es数据库ip
es = Elasticsearch([HOST]) # 连接到es数据库

index_name = "my_es_table" # 对应的表名

# 查询
es.search(index=index_name, body=query, doc_type="sources")

# 数据插入
es.index(index=index_name, doc_type="sources", body=data)

# 数据删除
es.delete_by_query(index=index_name, body=query, doc_type="sources")

下面,我们就来考察一下有关这些操作的具体内容。

3. es表格创建 & 删除

1. es表格的创建

首先,我们来考察一下es中表格的创建过程。

在es中创建一张表格,大致需要做的内容包括:

  1. 指定表格的表明;
  2. 指定表格的结构;
  3. 发送命令到es进行表格的创建。

这里,我们重点来介绍一下表格的结构定义语法。

对一张es表格的表格定义,采用json格式的语法,一个典型的示例如下:

{
  "mappings": {
    "sources": {
      "properties": {
        "date": {
          "type": "date"
        },
        "name": {
          "type": "keyword",
          "fields": {
            "text": {
              "type": "text",
              "analyzer": "jieba_index"
            }
          }
        },
        "age":{
          "type": "integer"
        },
        "gender":{
          "type": "keyword"
        },
        "department": {
          "type": "text"
        }
      }
    }
  }
}

其中,mappings、sources以及properties为常备字段,下述date、name、age、gender以及apartment字段为表格的索引字段,是可以自行设置的,每一个索引都通过一个字典的形式进行赋值,需要通过type字段给定其类型特征。如果需要给出其他一些特征,则可以通过fields字段来额外给出,比如上述例子当中,就是为了让name字段即可以以keyword的形式完全匹配,又可以通过text的方式进行模糊匹配。

因此,我们即可在kibana上面发送下述命令即可创建一张表格:

PUT my_test_table
{
  "mappings": {
    "sources": {
      "properties": {
        "date": {
          "type": "date"
        },
        "name": {
          "type": "keyword",
          "fields": {
            "text": {
              "type": "text",
              "analyzer": "jieba_index"
            }
          }
        },
        "age":{
          "type": "integer"
        },
        "gender":{
          "type": "keyword"
        },
        "department": {
          "type": "text"
        }
      }
    }
  }
}

需要说明的是,如果使用的elasticsearch版本高于7的话,貌似sources字段已经不需要再提供了,mapping的定义方式为:

{
  "mappings": {
      "properties": {
        "date": {
          "type": "date"
        },
        "name": {
          "type": "keyword"
        },
        "age":{
          "type": "integer"
        },
        "gender":{
          "type": "keyword"
        },
        "department": {
          "type": "text"
        }
      }
    }
}

具体关于es表中数据的数据类型可以参考下述链接中的说明:

当然,创建完成之后我们也可以通过下述命令来查看数据格式定义mapping内容:

GET my_test_table/_mapping

2. es表格的删除

而es表格的删除命令就更加简单了,只需要在kibana当中简单地输入下述命令即可删除对应的表格(my_test_table):

DELETE my_test_table

4. es数据库写入数据

现在,我们来看一下如何向es数据库中写入数据。

1. 直接进行数据写入

首先,我们看一下如何在es当中直接进行数据的写入。

这部分内容其实就比较直接,只需要使用下述命令即可实现:

POST cys_test_table/sources
{
  "name": "Alice",
  "gender": "female",
  "age": "24",
  "department": "physics"
}

执行成功之后,数据库中会写入一条数据如下:

{
    "_index": "cys_test_table",
    "_type": "sources",
    "_id": "K5GmOXgBCPJxWUBsP_1c",
    "_score": 1,
    "_source": {
        "name": "Alice",
        "gender": "female",
        "age": "24",
        "department": "physics"
    }
}

其中,_id字段为es表给该条数据分配的唯一id。如果有需要人工指定id的话,只需要将数据添加命令修改为如下即可:

POST cys_test_table/sources/123456
{
  "name": "Bob",
  "gender": "male",
  "age": "24",
  "department": "physics"
}

特别地:

  1. 如果两次数据上传时指定id相同,那么新的数据会直接覆盖掉原有的数据;
  2. 创建数据时可以允许数据中某一个字段为空;

2. python数据写入

下面,我们来考察一下如何使用python来对es数据库中的表格进行数据添加。

python向es表格中添加数据的方法主要基于elasticsearch库来实现。

1. 单条数据插入

python要实现单条数据的加入方法可以通过index函数进行实现,其具体用法和上一节的内容并无差别。

给出一个简单的demo如下:

import datetime
from elasticsearch import Elasticsearch

HOST = '127.0.0.1:9200' # es数据库ip
es = Elasticsearch([HOST]) # 连接到es数据库

data = {
    "name": "David",
    "gender": "male",
    "age": 30,
    "department": "chemistry",
    "date": datetime.datetime.now()
}
es.index(index="my_test_table", doc_type="sources", body=data, id=1234567)

当然,id参数也可以不进行指定,系统会默认指定一个唯一的id。

2. 批量数据插入

如果要批量地进行数据的写入,当然你可以暴力地使用一个for循环实现,或者更“高级”一点在加一个多线程。

但是elasticsearch库本身内置了一个批量数据写入的函数helpers.bulk,其用法如下:

from elasticsearch import helpers

data_list = [
    {"name": "Ella"},
    {"name": "Fred"}
]
action = [{
    "_index": "my_test_table", 
    "_type": "sources",
    "_source": data
} for data in data_list]
helpers.bulk(es, action)

5. es数据库数据查询

1. 数据查询基础语法

es数据库的一个核心优势就在于它能够提供灵活且高效的数据搜索功能,因此,这里,我们就来重点考察一下es数据库的数据查询方法。

es数据库基础的数据查询方法还是非常简单的,es中直接的操作命令如下:

GET cys_test_table/_search
{
  "query":{
    "term":{
      "name": "Alice"
    }
  }
}

如果要使用python来进行数据查询其方法也差不多,其具体的实现语法如下:

query = {
    "query":{
        "match_all": {}
    }
}
es.search("my_test_table", body=query, doc_type="sources")

可以看到,数据检索本身的实现是非常简单的,要想灵活地获取目标数据,其核心就在于query问题要怎么去写。

因此,下面我们重点来看一下query命令的语法。

2. query命令语法简介

1. query语法基础

es数据库中的query符合json的格式,其基本格式如下:

{
    "query": {
        "match_all": {}
    }
}

可以看到,每一个query事实上都是一个字典,其中包含一个query字段,其内容为真正的查询内容,其数据格式同样为一个字典。

上述match_all关键词是一个最为基础的命令请求,表示返回所有的数据。

2. 单条件匹配查询

对于单一条件的搜索请求,query语法是相对比较简单的,给出一个简单的样例如下:

{
    "query": {
        "term": {
            "name": "Alice"
        }
    }
}

上述语法就是在es表格中检索name字段为Alice的数据。

搜索得到的结果如下:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.6931472,
    "hits": [
      {
        "_index": "my_test_table",
        "_type": "sources",
        "_id": "K5GmOXgBCPJxWUBsP_1c",
        "_score": 0.6931472,
        "_source": {
          "name": "Alice",
          "gender": "female",
          "age": "24",
          "department": "physics"
        }
      }
    ]
  }
}

检索的关键词term表示完全匹配,针对的是keyword类型的关键词。

除了term之外,其他还有match关键词,表示部分匹配。

但是需要注意的是,它针对的必然是text类型的属性,对于keyword类型的数据,es表格是将其作为整体进行储存的,不会对其建立倒排索引。

3. 范围条件查询

除了直接的匹配关系之外,es还支持对范围进行搜索,检索关键词为range。

我们给出一个简单的例子如下:

{
    "query": {
        "range":{
            "date": {
                "gt": "now-1d",
                "lte": "now"
            }
        }
    }
}

其中,关系词可以包括:

  1. gt: 大于( > > >)
  2. lt: 小于( < < <)
  3. gte: 大于等于( ≥ ≥ ≥)
  4. lte: 小于等于( ≤ ≤ ≤)

更为具体的可以参考链接:

4. 多条件匹配查询

同样的,对于多条件匹配查询语言,或者说组合条件查询语言,我们同样先给出一个简单的样例,然后再进行具体的展开。

给出一个样例如下:

{
    "query": {
        "bool": {
            "must": [
                {
                    "term":{"name": "Alice"}
                },
                {
                    "term": {"age": 24}
                }
            ]
        }
    }
}

上述query语句表示在数据库中检索名字为Alice且年龄为24岁的人,must表示与条件,即list中的所有条件均需满足。

除了must之外,还有以下一些关键词可以用于多条件组合搜索:

  1. should:表示或条件,即list当中只要满足其一即可;
  2. must_not:list当中所有条件均不能满足,即not any条件;

当然,从上可以看到,es的query语句是非常灵活的,在must条件当中复合更多的条件也是可行的,写的时候注意一下语法就行了。

6. es数据库数据删除

1. es数据库中操作命令

最后,我们来考察以下如何从es数据库中删除数据。

从表中删除数据的命令同样为delete,只要指定表的域以及数据的id即可对数据进行删除。

给出一个例子如下:

DELETE my_test_table/sources/123456

上述命令即可从my_test_table这张表中的sources域中删除id为123456的数据。

2. 使用python进行数据删除

现在,我们来考察一下如何使用python对es表进行数据删除。

一种比较直接的方式是和前面直接操作相同,通过数据的id直接来对数据进行删除,其实现代码如下:

index_name="my_test_table"
es.delete(index_name, doc_type="sources", id="123456")

不过,在更多的情况下,事实上我们是想像检索数据那样直接删除一些满足条件的数据。这时,我们可以采用delete_by_query命令,其实现代码如下:

index_name="my_test_table"
query = {
    "query":{
        "term":{
            "name": "Alice"
        }
    }
}
es.delete_by_query(index_name, query, doc_type="sources")

7. 总结

以上便是我对于es数据库使用方面的一些简单的总结,相信对于入门应该是足够了,至少就我而言,目前已经足以支持我完成工作中的一些简单问题了。

但是,如前所述,数据库本身博大精深,光是es其核心的原理设计以及其内部数据的存储模式就已经是一个很值得深入研究的点了,这里仅仅只是浅尝辄止,如果真的是这个方向的专业人员的话,还是建议后续进一步研究一下官网的文档。

8. 参考链接

  1. https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
  2. https://www.elastic.co/guide/en/elasticsearch/reference/6.0/getting-started.html
  3. https://www.cnblogs.com/Neeo/articles/10788573.html
  4. https://elasticsearch-py.readthedocs.io/en/6.8.2/api.html#elasticsearch
  5. https://www.elastic.co/guide/cn/elasticsearch/guide/current/combining-queries-together.html
  6. ES 22 - Elasticsearch中如何进行日期(数值)范围查询
  7. https://segmentfault.com/a/1190000010595007
  8. https://www.cnblogs.com/sunsky303/p/9438737.html
  9. https://www.jianshu.com/p/7d687c9dba4f
python 操作 Elasticsearch(一) python 操作 Elasticsearch(一) 1、python连接elasticsearch数据库 from elasticsearch import Elasticsearch from elasticsearch import helpers es = Elasticsearch(['你的elasticsearch的外网连接'], http_auth=('数据的用户名', '密码')) 阅读详情

相关推荐

Python 玩转 Elasticsearch的一些技巧与经验

在Python项目中,我们可以选择以下几个库与Elasticsearch交互:elasticsearch-py:官方提供的低级客户端(Official low-level client for Elasticsearch),直接且灵活。elasticsearch-dsl:基于的高级封装,简化了很多操作,更适合日常使用。django-elasticsearch-dsl:为 Django 用户设计,基于elasticsearch-dsl,实现了与Django的深度集成。

douluo998的博客 2145

python操作ElasticSearch

利用python操作ElasticSearch 利用python对ElasticSearch进行操作主要会涉及两个python库elasticsearch和elasticsearch-dsl。除此之外,还会一个更为简单的python库:es-pandas。 其中,elasticsearch-py是一个官方提供的elasticsearch python客户端库,它只是对elasticsearch的rest API接口做了一层简单的封装。相对于这个客户端库,官方还提供了相对高级的elasticsearch-ds

weixin_42182448的博客 1万+

【Python】Elasticsearch

要理解 Elasticsearch,我们不能仅仅将其看作一个数据库,它更是一个强大的、专为分布式环境设计的、开源的、实时的、用于搜索和分析的搜索引擎。它的诞生是为了解决传统数据库在处理非结构化数据、全文检索和大规模数据分析时遇到的瓶颈。Elasticsearch 的正式定义: Elasticsearch 是一个基于 Apache Lucene 构建的开源、分布式、RESTful 风格的搜索和分析引擎。它能够以极高的速度存储、搜索和分析大量数据。核心特性深度剖析:实时性 (Real-time):分布式 (Di

宅男很神经 1544

Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x

Elasticsearch 是一个非常强大的搜索引擎,使用非常广泛。本文的重点是使用 Python 批量创建 Elasticsearch 文档。我们仅仅触及了 Elasticsearch 搜索查询的皮毛。我有专门的文章介绍 Elasticsearch的 基本查询和高级查询,用于搜索和分析。Elasticsearch 原生语言中使用的查询与 Python 中使用的查询相同。因此,当你掌握了Kibana中的原生查询后,你就可以在Python中自由使用了。

Elastic 中国社区官方博客 9696

【ElasticSearch笔记】使用Python生成ES DSL语句

将传统的JSON DSL语句,映射为Python类、对象操作,使其两者相互转换互通,减少手动编写JSON DSL语句的繁琐,提高可维护性。

木子家有小可爱的博客 1586

利用elasticsearch实现搜索引擎

  ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二最流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 起步 1. 安装jdk   由于elasticsearc...

大白成长记 1万+

ElasticSearch(ES) 搜索入门笔记

ElasticSearch(ES) 搜索入门笔记,如何创建mapping,analyzer,如何搜索等

beingstrong的博客 1699

ES搜索引擎的简单使用

1.创建索引 C:\Users\DELL&gt;curl -XPUT http://localhost:9200/qa/ 2.创建type http://localhost:9200/qa/_mapping/question {       "properties": {         "title": {           "analyzer": "ik_max_word",...

baidu_15113429的博客 2780

Elasticsearch:ES|QL 入门 - Python Notebook

在本笔记本中,你将学习 Elasticsearch 查询语言 (ES|QL) 的基础知识。你将使用官方 Elasticsearch Python 客户端。⚠️ 不要在生产环境中使用 ES|QL。此功能处于技术预览阶段,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。ES|QL 将在 8.13 正式发布(以官方发布为准)。在一下的展示中,我将使用 Elastic Stack 8.12 来进行展示。

Elastic 中国社区官方博客 1738

Elasticsearch:ES QL 入门 - Python Notebook

⚠️ 不要在生产环境中使用 ES|QL。此功能处于技术预览阶段,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。ES|QL 将在 8.13 正式发布(以官方发布为准)。在一下的展示中,我将使用 Elastic Stack 8.12 来进行展示。

2401_89693671的博客 1048

ElasticSearch学习笔记-Python API使用

ElasticSearch学习-Python API使用 1. 参考资料 Elasticsearch权威指南 Elasticsearch 开发指南 Elasticsearch 官网 优快云文章 ElasticSearch博客园 Python操作ElasticSearch ElasticSearch Python API官网 2. 代码实例 通过Python简单操作ElasticSearch ...

风之翊的专栏 1820

es python search 返回_在Python中如何使用Elasticsearch?

来源:Python程序员ID:pythonbuluo在这篇文章中,我将讨论Elasticsearch以及如何将其整合到不同的Python应用程序中。什么是ElasticSearch?ElasticSearch(ES)是一个建立在Apache Lucene之上的高度可用的分布式开源搜索引擎。它基于Java构建的,因此可用于许多平台。数据以JSON格式非结构化存储,这也使其成为一种NoSQL数据库。与...

weixin_39736150的博客 186

Elasticsearch的介绍 以及使用python操作es详细步骤

一. 什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度、谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据。然而对于我们自己的业务数据来说,肯定就没必要用这么复杂的技术了,如果我们想实现自己的搜索引擎,方便存储和检索,Elasticsearch 就是不二选择,它是一个全文搜索引擎,可以快速地储存、搜索和分析海量数据。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful w

数据知道的博客 4万+

介绍 Python Elasticsearch Client 的 ES|QL 查询构建器

Elastic推出Python Elasticsearch客户端新功能:ES|QL查询构建器模块(8.19+版本),支持用Python语法构建ES|QL查询。该模块集成了所有ES|QL命令、函数和运算符,可通过链式调用生成标准查询语句,并直接执行。文档类还提供esql_from()和esql_execute()方法实现查询构建与结果转换。目前该功能处于技术预览阶段,开发者可通过pip升级客户端体验,遇到问题可在GitHub提交反馈。

Elastic 中国社区官方博客 1599

OpenCV安装配置教程VS2022(超级顺利)

博主最开始没打算写这篇博客,只是想简单的在网上找一下最新版的OpenCV的安装配置教程,适用于VS2022的,但是我搜了一早上,也没搜到一个能让我成功安装配置的,看了很多很多文章,根本就没有几篇有用的。所以没办法了,只能自己研究了,于是就整理了这篇博客,希望能帮到和我一样的人,这就是博主一直信奉的利他精神!

weixin_47367099的博客 5万+

ml307 二次开发

中移物联网旗下4g模组官方网站官方教程id=514官方客户不知道啥时候上班 早上10点也说不在服务时间内 找不到官方的sdk下载路径。

myWorld001的博客 2891

python es 数据库_在 Python 中使用 Elasticsearch

在这篇文章中,我将讨论 Elasticsearch 以及如何将其整合到不同的 Python 应用程序中。什么是 ElasticSearch?ElasticSearch(ES)是一个建立在 Apache Lucene 之上的高度可用的分布式开源搜索引擎。它基于 Java 构建的,因此可用于许多平台。数据以 JSON 格式非结构化存储,这也使其成为一种 NoSQL 数据库。与其他 NoSQL 数据库不...

weixin_39895862的博客 462

ElaticSearchUtil工具类封装

package com.xxx.util; import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse; import org.elasticsearch.action.admin.indices.analyze.AnalyzeAction; import org.elasticsearch.action.ad

会飞的狼 6295

[es7]使用python向elasticsearch中插数据

​为了可以方便地实时观测插入过程中有无差错,选择使用自己独立开发的ESClient来实现数据的批量导入。其中关键方法为基于elaticsearch库中的help.bulk方法的add_date_bulk函数,只需要通过json库读取json文件形成列表,再把该列表传入该方法中,就可以不断将数据传入es中,并且可以观察到进度状态和异常信息。 插入脚本 使用方法 创建一个es.ini配置文件,路径为conf/es.ini(可自定义,在main函数中更改),格式如下 [Elasticsearch] hos

SCUhzs 2424

用python提取PDF中各类文本内容的方法

用python提取PDF中各类文本内容的方法

安静的软件工程师 6087

Arduino MLX90393磁力计驱动库:高精度三轴霍尔传感器开发指南

三轴霍尔效应磁力计是嵌入式系统中实现无接触角度检测、电子罗盘与电流传感的核心器件。其工作原理基于霍尔电压随外磁场矢量变化的物理特性,通过I²C接口输出高分辨率(16/20-bit)XYZ轴原始数据,并集成温度补偿与数字滤波功能。技术价值体现在确定性响应、低功耗(典型0.5 μA待机)及强抗干扰能力,适用于电池供电设备与实时操作系统环境。典型应用场景包括电机位置反馈、永磁体旋转角度解算、工业编码器和地磁导航。本库专为Arduino生态优化,深度封装MLX90393寄存器协议与自校准流程,同时兼容STM32、E

weixin_29363791的博客 642

ElasticSearch Python 使用

索引,并插入一条数据,第2个print查询指定文档。Accept标头的简短版本,例如json,yaml。但个人觉得没有index好用!第1个print为创建。

TMesh的博客 1594

不会路由器叠加多条宽带?看这个就够了,能让你的局域网速度更快!

通常我们在企业网络或实际项目中,随着用户的增加,一条或者几条带宽不能满足正常使用,便可以对带宽进行叠加,便于网络带度更快;通常家里有可能有两条带宽的,联通或移动的,可能都是充话费送的,但网速都不怎么样,不用可惜,用之委屈,那怎么办呢?如在迅雷上开启下载,多个资源同时下载,此时总带宽可以达到120M,也就是WAN口带宽可以叠加。多wan口路由器, 一般是有2个wan口,分别为wan1与wan2。当然也有更多的wan口的。[1] 对整个局域网来说,出口带宽数量多了,相当于总带宽上升,这样是可以起到叠加效果。

qq_43416206的博客 1112
上一篇: LeetCode笔记:Weekly Contest 232 比赛记录
下一篇: LeetCode笔记:Biweekly Contest 48 比赛记录
Espresso Macchiato
博客等级 码龄7年 2453粉丝 818原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值