Elasticsearch 500万索引批量存储php的示例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关Elasticsearch 500万索引批量存储php的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。引用文件dict.txt.cache
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
中智农互联网科技
广东猪兼强互联网科技有限公司
科技赋能下的互联网金融
互联网科技垄断
广州互联网科技公司
卓越科技(互联网 )
壹账通互联网科技
掌上梦互联网科技
互联网汽车科技小镇
来此购互联网科技有限公司
互联网为啥属于高科技
青岛科技大学互联网大赛研究生
深圳育鹏互联网科技有限公司招聘
健康食品互联网创新科技园项目
中国科技创新与世界互联网大会
996高科技互联网公司
河南住房之家互联网科技
启辰互联网科技
张召忠谈中国互联网科技
互联网科技企业文化
伟宏互联网科技
互联网下的科技发展
科技互联网公司logo
广州紫鲸互联网科技
重庆科技学院互联网
新华互联网科技2019
华服互联网科技官网
崇明区互联网教育科技诚信经营
保险科技服务互联网营销体系
云南互联网科技学费