Elasticsearch 500万索引批量存储php的示例分析
发表于:2024-12-03 作者:千家信息网编辑
千家信息网最后更新 2024年12月03日,这篇文章给大家分享的是有关Elasticsearch 500万索引批量存储php的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。引用文件dict.txt.cache
千家信息网最后更新 2024年12月03日Elasticsearch 500万索引批量存储php的示例分析
这篇文章给大家分享的是有关Elasticsearch 500万索引批量存储php的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
引用文件
dict.txt.cache.json, pinyin.php 云盘下载地址:
http://pan.baidu.com/s/1c1W6fQC
索引生成测试代码 php
单条索引生成,速度较慢 elastic.php
build();$dict = array_map(function($str){ return str_ireplace('.', '', $str);}, array_keys(json_decode(file_get_contents('./dict.txt.cache.json'), true) ));$a = 1;do { $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => $a, 'body' => [ 'user_id' => mt_rand(100000000, 2000000000).'@qq.com', 'name' => $tmpname = $dict[mt_rand(1000,360000)], 'py' => \Utils\Pinyin::conv($tmpname), 'phone' => array_rand(array_flip([13,15,17,18])) . mt_rand(100000000, 999999999), 'mail' => substr( str_shuffle( "0123456789abcdefghijklmnopqrstuvwxyz"), 0, mt_rand(5,20) ) . '@' . array_rand( array_flip( [ '163.com', '126.com', 'yeah.net', 'qq.com', 'foxmail.com', 'gmail.com', 'yahoo.com', 'hotmail.com', 'sina.com', 'sina.cn', 'sina.com.cn' ] ) ), 'appoint' => implode( '-', array_map(function() use($dict) { return $dict[mt_rand(1000,360000)] . (mt_rand(0,100) > 60 ? $dict[mt_rand(1000,360000)] : '') . (mt_rand(0,100) > 80 ? $dict[mt_rand(1000,360000)] : '');}, array_pad([], mt_rand(2,5), '') ) ), ] ]; //创建索引 $response = $client->index($params); $a = isset($a) ? ++$a : 1; $a % 50 === 0 ? print(($b = isset($b) ? ++$b : 1).'%'.PHP_EOL) : '';} while ($a <= 5000);$end = "结束时间:" . time() . PHP_EOL;echo $end;echo "耗时:" . ($end - $start);
批量索引生成 elasticBulk.php
setRetries(10)//重试次数,默认重试次数为集群节点数 ->setConnectionPool($connectionPool) ->setSelector($selector) ->build();$dict = array_map(function($str){ return str_ireplace('.', '', $str);}, array_keys(json_decode(file_get_contents('./dict.txt.cache.json'), true) ));echo $start = "开始时间:" . time() . PHP_EOL;createData($client, $dict);echo $end = "结束时间:" . time() . PHP_EOL;echo "耗时:" . $end - $start;function createData($client, $dict){ $bulk = array('index'=>'my_index4','type'=>'my_type4'); //bulk批量生成 for($j = 0;$j <= 99; $j++) { for($i = $j * 50000 + 1; $i <= $j * 50000 + 50000; $i ++) { $bulk['body'][]=array( 'index' => array( '_id'=>$i ), 'type' => 'blocking' ); $bulk['body'][] = [ 'user_id' => mt_rand(100000000, 2000000000).'@qq.com', 'name' => $tmpname = $dict[mt_rand(1000,360000)], 'py' => \Utils\Pinyin::conv($tmpname), 'phone' => array_rand(array_flip([13,15,17,18])) . mt_rand(100000000, 999999999), 'mail' => substr( str_shuffle( "0123456789abcdefghijklmnopqrstuvwxyz"), 0, mt_rand(5,20) ) . '@' . array_rand( array_flip( [ '163.com', '126.com', 'yeah.net', 'qq.com', 'foxmail.com', 'gmail.com', 'yahoo.com', 'hotmail.com', 'sina.com', 'sina.cn', 'sina.com.cn' ] ) ), 'appoint' => implode( '-', array_map(function() use($dict) { return $dict[mt_rand(1000,360000)] . (mt_rand(0,100) > 60 ? $dict[mt_rand(1000,360000)] : '') . (mt_rand(0,100) > 80 ? $dict[mt_rand(1000,360000)] : '');}, array_pad([], mt_rand(2,5), '') ) ), ]; } $client->bulk($bulk); //进度统计 print($j + 1).'%'.PHP_EOL; }}
单节点测试结论
1.单条性能约100条/s , 批量性能约5000条/s
2.单节点批量处理一次性bulk数据上限35万,否则报错:PHP Fatal error: Uncaught exception 'Elasticsearch\Common\Exceptions\NoNodesAvailableException' with message 'No alive nodes found in your cluster
3. 500万全真模拟数据占空间2G
4.查询性能:
第一次稍慢,但在1秒以内
第二次极速
感谢各位的阅读!关于"Elasticsearch 500万索引批量存储php的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
索引
生成
性能
时间
示例
分析
存储
内容
数据
更多
次数
篇文章
节点
测试
不错
实用
一次性
上限
代码
地址
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
打开数据库的网址
局域网的数据库在哪
无线传感器的网络安全
计算机网络技术是网络安全吗
云驰网络技术有限公司
数据库查询单价最高的产品
qq情侣空间服务器失败怎么回事
青浦区综合网络技术设计
网络安全工程师证书报考条件
数据库统计数量方法
网络安全法泄露信息多少条
戴尔服务器有哪些功能
昌吉新湖互联网科技有哪些
网络安全调查报告2000字
服务器是否需要定时关机
2017年网络安全法亮点
阿里云服务器的镜像是什么
派出所开展网络安全自查
2019山东网络技术考试大纲
如何连接局域网服务器打印机
信息网络安全运营应急预案
珠下软件开发
山西水果软件开发
电脑病毒关乎网络安全
数据库查看实例名
虚拟服务器 端口
河北软件开发者企业
广州市八爪网络技术有限公司
服务器主板u盘启动项
ps安装程序数据库出现不一致