Elasticsearch索引数据生成和导入

本文详细介绍了如何在Elasticsearch中查询数据,生成Json文件,并进行数据导入。首先,通过获取上次更新时间和最新系统时间来处理日期间隔,然后调用SQL查询数据。接着,生成Json文件,再根据别名获取索引名,批量写入数据,并在导入后优化索引,最后清理并备份数据文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 查询数据

1 获取上次更新时间

可以保存在文本里。

public function getLastUpdate(){
   
    $sLastUpdate = $this->oFileServer->tryFileGetContents($this->getLastUpdatePath());
    $this->aLastUpdate = json_decode($sLastUpdate,true);
}

2 获取最新系统时间作为更新时间

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as time from dual

3 处理日期间隔

public function getDateGap($sStartDate,$sEndDate,$type='delta'){
   
	 $res = [];
	 $iStartStamp = strtotime($sStartDate);
	 $iEndStamp = strtotime($sEndDate);
	 if ($type == 'full') array_push($res,['gt'=>'','lt'=>date('Y-m-d H:i:s',$iStartStamp)]);
	 $aGap = [['gap'=>'7','limit'=>2],['gap'=>'3','limit'=>2],['gap'=>'1','limit'=>0]];//代表按7天的间隔返回,直至近2天后按下一个数组配置再返回后面的间隔
	 do{
   
	     $iTamp = $iStartStamp + $this->dealGap($iEndStamp,$iStartStamp,$aGap);
	     array_push($res,['gt'=>date('Y-m-d H:i:s',$iStartStamp),'lt'=>date('Y-m-d H:i:s',$iTamp)]);
	     $iStartStamp = $iTamp;
	 }while($iStartStamp <= $iEndStamp);
	 return $res;
}
public function dealGap($iEndStamp, $iStartStamp, $aGaps){
   
    $iDayGap = 60 * 60 * 24;
    $aGap = array_shift($aGaps);
    if(floor(($iEndStamp - $iStartStamp)/($iDayGap*$aGap['gap']))<=$aGap['limit']){
   
        if (empty($aGaps)){
   
            return $iEndStamp 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值