|
@@ -108,8 +108,9 @@ class SyncToEsCmd { |
|
@@ -108,8 +108,9 @@ class SyncToEsCmd { |
108
|
$data = $this->getDataByEs($id,$is_check_body);
|
108
|
$data = $this->getDataByEs($id,$is_check_body);
|
109
|
if($data){
|
109
|
if($data){
|
110
|
list($doc_id,$data) = $data;
|
110
|
list($doc_id,$data) = $data;
|
|
|
111
|
+ $bulkData = new \Lib\Es\BulkData();
|
111
|
// 主库
|
112
|
// 主库
|
112
|
- $this->toDataEs('email_lists_copy',$id,$doc_id,$data);
|
113
|
+ $bulkData->add('email_lists_copy',$doc_id,$data);
|
113
|
// 个人邮箱的情况
|
114
|
// 个人邮箱的情况
|
114
|
if(!$data['postid']){
|
115
|
if(!$data['postid']){
|
115
|
$postids = $this->getPostids($data['email_id']);
|
116
|
$postids = $this->getPostids($data['email_id']);
|
|
@@ -118,17 +119,19 @@ class SyncToEsCmd { |
|
@@ -118,17 +119,19 @@ class SyncToEsCmd { |
118
|
$data['postid'] = $postid;
|
119
|
$data['postid'] = $postid;
|
119
|
$data['source'] = 1;
|
120
|
$data['source'] = 1;
|
120
|
// 分库 个人邮箱
|
121
|
// 分库 个人邮箱
|
121
|
- $this->toDataEs('email_lists_branch_'.$data['postid'],$id,$doc_id,$data);
|
122
|
+ $bulkData ->add('email_lists_branch_'.$postid,$doc_id,$data);
|
122
|
}
|
123
|
}
|
123
|
}else{
|
124
|
}else{
|
124
|
// 分库 其他 非fob数据源
|
125
|
// 分库 其他 非fob数据源
|
125
|
- $this->toDataEs('email_lists_branch_0',$id,$doc_id,$data);
|
126
|
+ $bulkData->add('email_lists_branch_0',$doc_id,$data);
|
126
|
}
|
127
|
}
|
127
|
}else{
|
128
|
}else{
|
128
|
// 分库
|
129
|
// 分库
|
129
|
- $this->toDataEs('email_lists_branch_'.$data['postid'],$id,$doc_id,$data);
|
130
|
+ $bulkData->add('email_lists_branch_'.$data['postid'],$doc_id,$data);
|
130
|
}
|
131
|
}
|
131
|
|
132
|
|
|
|
133
|
+ $this->toDataEs($id,$bulkData);
|
|
|
134
|
+
|
132
|
}
|
135
|
}
|
133
|
}else{
|
136
|
}else{
|
134
|
// 没有数据时暂停1秒
|
137
|
// 没有数据时暂停1秒
|
|
@@ -287,39 +290,36 @@ class SyncToEsCmd { |
|
@@ -287,39 +290,36 @@ class SyncToEsCmd { |
287
|
|
290
|
|
288
|
/**
|
291
|
/**
|
289
|
* 同步数据到es
|
292
|
* 同步数据到es
|
290
|
- * @param string $index 索引名称
|
|
|
291
|
- * @param int $data_id list表的id
|
|
|
292
|
- * @param string $doc_id es文档id
|
|
|
293
|
- * @param array $data es数据
|
293
|
+ * @param int $data_id
|
|
|
294
|
+ * @param \Lib\Es\BulkData $bulkData
|
|
|
295
|
+ * @throws \Elastic\Elasticsearch\Exception\ClientResponseException
|
|
|
296
|
+ * @throws \Elastic\Elasticsearch\Exception\ServerResponseException
|
294
|
* @author:dc
|
297
|
* @author:dc
|
295
|
- * @time 2025/8/5 10:09
|
298
|
+ * @time 2025/8/6 20:55
|
296
|
*/
|
299
|
*/
|
297
|
- public function toDataEs($index,$data_id,$doc_id,$data){
|
|
|
298
|
-// echo $index;
|
|
|
299
|
-// echo ' ==== ';
|
300
|
+ public function toDataEs(int $data_id, \Lib\Es\BulkData $bulkData){
|
|
|
301
|
+
|
|
|
302
|
+ foreach ($bulkData->getIndexs() as $index){
|
300
|
$this->es->setIndex($index);
|
303
|
$this->es->setIndex($index);
|
301
|
// 检查数据库是否存在
|
304
|
// 检查数据库是否存在
|
302
|
if(empty($this->checkEsIndex[$index]) && $index != 'email_lists_copy'){
|
305
|
if(empty($this->checkEsIndex[$index]) && $index != 'email_lists_copy'){
|
303
|
if(!redis()->has('esmapcheck:'.$index)){
|
306
|
if(!redis()->has('esmapcheck:'.$index)){
|
304
|
$m = $this->setEsMap($index);
|
307
|
$m = $this->setEsMap($index);
|
305
|
if($m !== 9) _echo("{$index} 创建索引 ".$m);
|
308
|
if($m !== 9) _echo("{$index} 创建索引 ".$m);
|
306
|
- if(!$m){
|
|
|
307
|
- $this->log($data_id,$index);
|
|
|
308
|
- return;
|
|
|
309
|
- }
|
|
|
310
|
redis()->set('esmapcheck:'.$index,1,86400);
|
309
|
redis()->set('esmapcheck:'.$index,1,86400);
|
311
|
}
|
310
|
}
|
312
|
}
|
311
|
}
|
313
|
// 下次不在检查
|
312
|
// 下次不在检查
|
314
|
$this->checkEsIndex[$index] = 1;
|
313
|
$this->checkEsIndex[$index] = 1;
|
315
|
-
|
|
|
316
|
- $code = $this->es->save($doc_id,$data);
|
|
|
317
|
-
|
|
|
318
|
- if($code!==200){
|
|
|
319
|
- $this->log($data_id,$index);
|
|
|
320
|
- @file_put_contents(LOG_PATH.'/sync_es_fail.log',$index.":".$data_id."\n",FILE_APPEND);
|
|
|
321
|
- _echo($index.': '.$data_id.'===>'.$code);
|
|
|
322
|
}
|
314
|
}
|
|
|
315
|
+ // 批量提交数据的
|
|
|
316
|
+ $ret = $this->es->bulk($bulkData);
|
|
|
317
|
+ if(!empty($ret['errors'])){
|
|
|
318
|
+ $this->log($data_id);
|
|
|
319
|
+ @file_put_contents(LOG_PATH.'/sync_es_fail.log',$data_id."\n",FILE_APPEND);
|
|
|
320
|
+ _echo($data_id.' ===> 0');
|
|
|
321
|
+ }
|
|
|
322
|
+
|
323
|
}
|
323
|
}
|
324
|
|
324
|
|
325
|
/**
|
325
|
/**
|