社工裤搭建(上亿数据秒查询)

前言

这只是一个技术文档方向的一篇文章,请不要像我索取任何的泄露数据库,博主也不会提供任何的数据内容。
本篇文章只是做一个技术文章备份,以及自此期间出现的问题。

参考文章来源:Solly

正文

昨天我不是发布了一篇文章嘛,上亿数据【社工裤】于是我做了“水平分表”等操作,虽然优化了查询速度但是数据库十分庞大,用了两天好不容易写好前后端和数据库的优化,昨天晚上才发完博客,室友就告诉我这个方法可以搭建上亿数据而且秒查询。我TM心态崩了我很高兴的打算今天自己来试试 :huaji2:

下载工具

以下的工具均来自这个网址:点击直达

Elasticsearch :这是一个全文搜索的软件,网上介绍非常牛逼。

Logstash:这个是用来导入到Elasticsearch中的一个工具。

Kibana:这个是一个对Elasticsearch的后台。

尽量下载使用其他软件,实在不行用迅雷也可以,浏览器自带的很慢

Elasticsearch安装步骤

由于Elasticsearch需要Java8 (点击直达)环境,所以在我们部署环境之前我们还需要把Java环境部属成功,这里就忽略Java的部署步骤。解压安装包后找到elasticsearch-6.4.2.zip解压的目录,然后定位到bin\elasticsearch.bat  右击管理员运行即可。

运行完后 浏览器输入 127.0.0.1:9200  如果显示图片中的内容就可以了

Kibana安装步骤

本篇文章主要讲怎么安装Kibana(点击直达)后台管理软件,同样本工具也需要使用到Java(点击直达)请自行安装。同样Kibana也是一个绿色的软件无需安装,直接打开bin\kibana.bat即可。前提是你的Elasticsearch要打开。

如果要汉化:在kibana-7.10.2-windows-x86_64\config\kibana.yml  配置文件中添加   i18n.locale: "zh-CN"   就好了

Logstash数据导入

本篇主要讲述使用Logstash(点击直达)将数据导入到Elasticsearch中。同样Logstash也是一个绿色的软件,但是如果导入数据的话,这里还需要一些配置文件才能正确的使用。

配置

导入说明:
这里我将使用之前泄露的qq.txt为例进行txt导入操作,此txt实际是等同于一个csv文件。
内容格式是:35*****----17*****9
数据格式为:QQ号----绑定的手机号

首先创建一个配置文件内容如下。


input {
  file {
    path => ["D:/sgk/qq.txt"]
	# 设置多长时间检测文件是否修改(单位:秒)
	stat_interval => 1
	# 监听文件的起始位置,默认是end
	start_position => beginning
	# 监听文件读取信息记录的位置
	sincedb_path => "D:/sgk/qq_db.txt"
	# 设置多长时间会写入读取的位置信息(单位:秒)
	sincedb_write_interval => 5
    	codec => plain{
		charset=>"GBK"
		}
	}
}
filter {
	#去除每行记录中需要过滤的\N,替换为空字符串
	mutate{
		gsub => [ "message", "\\r", "" ]
	}
	csv {
		# 每行记录的字段之间以|分隔
		separator => "----"
		columns => ["qq","phone"]
		# 过滤掉默认加上的字段
		remove_field => ["host", "tags", "path", "message","@timestamp","@version"]
	}
}
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "qq"
    }
#建议吧stdout这段删除,会影响到导入数据,这个是显示导入数据过程的
	stdout {
		codec => rubydebug
	}
}

使用cmd进入到logstash文件夹的bin目录下,然后执行如下命令:logstash.bat -f E:\elastic\database\qq.conf   进行导入数据操作

数据导入成功后,在Kibana→Discover→Create index pattern

  1. 创建索引这里填*号
  2. 时间这里填写最后一个
  3. 然后重新打开Kibana→Discover 就可以进行检索了

特别篇:如何提高导入速度

在导入配置文件里面,最好不要设置输出,否则很影响导入速度

删除studout 这段
 stdout{
        codec=>rubydebug
    }

在Logstash 配置文件(logstash/logstash.yml)中设置线程和其他参数


#
pipeline.workers: 24
pipeline.batch.size: 10000
pipeline.batch.delay: 10

在优化Logstash中网上有很多博客里面有这条pipeline.output.workers  ,大家一定不要写上去,因为在7.X版本中是没有这个配置命令的。

我们对Logstash优化后平均一分钟是可以导入1分钟20万数据,有可能是我配置还没真的配得很好

但是我想说对于我们常用的社工库,差不多都是几亿起的数据,这样的导入速度真心慢 :xinsui:

因为mysql使用load data infile 导入7亿数据的txt只需要20分钟。

更多配置详情请参考:ELK下之Logstash性能调优(从千/秒=>万/秒=>10万/秒)

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注