ES学习(一)环境搭建[多图慎入]

随着生产环境数据的急剧膨胀,传统关系型数据库在查询性能、扩容缩容等方面代价越来越高,我们需要一个具有扩展性好、查询性能高的NoSQL服务作为辅助[缓存]来弥补关系型数据库这方面的不足。

近年来存储器结束了双雄争霸[Mysql,Oracle]迎来了多元化的时代,如Redis、MongoDB、TiDB、Hadoop等。ElasticSearch是一个使用Restful接口基于Lucene引擎开发的去中心化的全文搜索引擎,可以将关系型数据库中一些数据作为“缓存”存储在es中以适应更复杂条件下的高性能查询。

一、环境搭建

es的官方文档做的很好,我们可以参考官方文档,我找了目前最新的稳定版本镜像安装方式: Quick start | Elasticsearch Guide [7.16] | Elastic

1.1 环境准备

准备一台机器,本人是虚拟机192.168.42.101

新建目录:/root/docker/es 并在该目录下新建文件夹config、data、plugins

1.2 下载镜像及初始化配置

//镜像下载
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.16.0
docker pull docker.elastic.co/kibana/kibana:7.16.0

//创建自定义网络[可不创建]
docker network create elastic

//设置可外网访问的配置
echo "network.host: 0.0.0.0">>/root/docker/es/config/elasticsearch.yml

1.3 安装

//安装es
docker run --name es --net elastic -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /root/docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /root/docker/es/data:/usr/share/elasticsearch/data \
-v /root/docker/es/plugins:/usr/share/elasticsearch/plugins \
-d docker.elastic.co/elasticsearch/elasticsearch:7.16.0

//es启动好后安装kibana
docker run --name kibana --net elastic -p 5601:5601 \
-e "ELASTICSEARCH_HOSTS=http://es:9200" \
-d docker.elastic.co/kibana/kibana:7.16.0

1.4 外网访问测试

ps:安装时提示:IPv4 forwarding is disabled. Networking will not work.

需要修改下网络配置,否则外网会无法访问es:

vim /etc/sysctl.conf         //修改文件
net.ipv4.ip_forward=1        //修改成1,若没有则添加
systemctl restart network    //重启网络服务让配置生效

1.5 熟悉kibana

add integrations是集成第三方软件的文档,写的很全,但刚开始不需要集成什么.

我们选择自行探索explore on my own,然后选择集成旁边的Try sample data,这里有三个模板数据可以选择也可以自行导入,我选择中间这个。

等待下载完成,可以查看kibana做的漂亮的数据图表

1.6 学习使用工作台

点击左侧边栏,选择Discover 

选择第一条数据展开,查看数据详情。左边是field,右边是value

添加初始过滤条件,比如根据指定索引查询,就当是表名或者数据库名吧

查看field,可以列出数量最多的前5条,点加号加入查询该字段

这么看是不是就比较有感觉了,KQL语法查询(kibana搞出来的一套简化查询语句的语法),此处相当于 where xx = US

前面自动填充的列也不一定要填,不填就会用参数值匹配每一个字段。此处得用*作前缀查询,如果添加了分词器,则可以支持更智能的全文查询,就像用百度一样了

 点击由上角的Inspect可以查看此次查询分析,还可以查看查询语句和返回的结果json结构


这儿就是我们手动执行Lucene语句的地方了,后面练习es的语法主要就在这儿,点开侧边栏选择dev tools,这边有语句执行的profiler分析

03-19
### IEEE 802.1Q VLAN Tagging Protocol Standard IEEE 802.1Q 是支持虚拟局域网(VLAN)的标准协议之一,通常被称为 Dot1q。该标准定义了一种用于以太网帧的 VLAN 标记系统以及交换机和桥接器处理这些标记帧的操作流程[^2]。 #### 协议结构概述 IEEE 802.1Q 的核心功能在于通过在以太网数据帧中插入特定字段来实现 VLAN 标签的功能。这种标签使得网络设备能够识别哪些流量属于哪个 VLAN,并据此执行转发决策。具体来说: - **Tag Header**: 在原始以太网帧头部增加了一个额外的 4 字节字段作为 VLAN 标签头。这四个字节包含了以下部分: - **Priority Code Point (PCP)**: 使用 3 比特表示优先级级别,范围从 0 到 7,主要用于 QoS 控制。 - **Canonical Format Indicator (CFI)**: 这是一个单比特位,在传统以太网环境中设置为零。 - **VLAN Identifier (VID)**: 使用 12 比特标识具体的 VLAN ID,理论上可以支持多达 4096 个不同的 VLAN(编号从 0 至 4095),其中某些特殊值保留给内部用途或管理目的。 #### 数据包处理机制 当一个带有 VLAN tag 的数据包进入支持 IEEE 802.1Q 的交换机时,它会依据此标签决定如何路由或者过滤该数据流。如果目标端口不属于同一 VLAN,则不会传输至其他无关联的物理接口上;反之亦然——只有相同 VLAN 成员之间才允许互相通信除非经过路由器跨网段访问[^1]。 此外,为了简化管理和配置过程并增强互操作性,还引入了一些辅助性的子协议和服务组件比如 GARP(通用属性注册协议)。GARP 可帮助分发有关 VLAN 成员资格的信息到各个连接节点以便动态调整其行为模式而无需频繁手动干预[^3]。 以下是创建带 VLAN TAG 的 Python 示例代码片段展示如何模拟构建这样的 Ethernet Frame: ```python from scapy.all import Ether, Dot1Q, IP, sendp def create_vlan_packet(src_mac="00:aa:bb:cc:dd:ee", dst_mac="ff:ff:ff:ff:ff:ff", vlan_id=100, src_ip="192.168.1.1", dst_ip="192.168.1.2"): ether = Ether(src=src_mac, dst=dst_mac) dot1q = Dot1Q(vlan=vlan_id) ip_layer = IP(src=src_ip, dst=dst_ip) packet = ether / dot1q / ip_layer return packet packet = create_vlan_packet() sendp(packet, iface="eth0") # Replace 'eth0' with your network interface name. ``` 上述脚本利用 Scapy 库生成包含指定源地址、目的地址及所属 VLAN 编号的数据报文并通过选定的网卡发送出去测试实际效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值