Mysql数据插入Elasticsearch搜索引擎

时间:2017-04-12作者:klpeng分类:数据库浏览:1845评论:0

上面一篇文章介绍了es搜索引擎的安装配置,这一篇文章来介绍一个典型案例:

这个案例主要为了解决五百万条车牌信息的数据,针对车牌做模糊查询,下面贴出一段代码,主要实现以线程的形式,将数据库的信息写入到搜索引擎中,不多说了直接贴代码

<?php

//日志存储
function klog($text){
	$logfile="./log/"."kput-".date("Ymd").".log";
	if(!is_array($text)){
		file_put_contents($logfile,$text."\n",FILE_APPEND);
	}else{
		file_put_contents($logfile,"And The Data Is Array:\n",FILE_APPEND);
		foreach($text as $k => $v){
			file_put_contents($logfile,$k." => ".$v."\n",FILE_APPEND);
		}
	}
}

//存储索引种子的文件
if(!file_exists("./zix.txt")){
	die('File Mix Does Not Exist');
}

//加载php-elasticsearch扩展
require_once('vendor/autoload.php');
//绑定elasticsearch服务器
$hosts=array("127.0.0.1:9200");
$client=Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();

//开始执行doing
while(true){
	$mix=file_get_contents("./zix.txt");
	$con = mysql_connect("127.0.0.1:3306","klpeng","123456789");
	if (!$con)
	{
		klog("At Time".date("Y-m-d H:i:s :")."Mysql Connect Error".mysql_error());
		die('Could Not Connect: ' . mysql_error());
	}
	mysql_select_db("ligphp", $con);

	mysql_set_charset("utf8");

	$res = mysql_query("select max(id) as max from et_car");

	$row = mysql_fetch_assoc($res);

	$max=$row['max'];

	$diff = $max-$mix;

	$diff && klog("At Time".date("Y-m-d H:i:s :")."Daemon Thread Find ".$diff." The Diff Data, And Insert To Search Engine Now.");

	while($mix <= $max){
		$res=mysql_query("select plate from et_car where id=".$mix);
		$row = mysql_fetch_assoc($res);
		if(!$row){
			$mix=$mix+1;
			file_put_contents("./zix.txt",$mix);
			continue;
		}
		$plate=strtolower($row['plate']);
		str_replace('o','0',$plate);
		$pArr = preg_split("/([a-zA-Z0-9]+)/", $plate, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
		$params = array('index' => 'car','type' => 'plate','id' => $mix);
		$params['body']=array('id'=>$mix,'c'=>$pArr[0],'v'=>$pArr[1]);
		$client->index($params);
		$mix=$mix+1;
		file_put_contents("./zix.txt",$mix);
	}
	mysql_close($con);

	$diff && klog("At Time".date("Y-m-d H:i:s :")." Completed The Diff Data Insertion.");

	sleep(60);
}

?>



原创文章如转载,请注明出处,本文首发于彭超的博客

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢