...
|
...
|
@@ -190,6 +190,65 @@ class SyncToEsCmd { |
|
|
public $checkEsIndex = [];
|
|
|
|
|
|
|
|
|
public function setEsMap($index){
|
|
|
$this->es->setIndex($index);
|
|
|
if($this->es->getMapping()){
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
if(redis()->add('setmaplock:'.$index,1,20)){
|
|
|
return $this->es->putMapping([
|
|
|
'properties' => [
|
|
|
'subject' => ['type' => 'text'],
|
|
|
'from' => [
|
|
|
'type' => 'object', // 定义 from 字段为对象
|
|
|
'properties' => [
|
|
|
'name' => [
|
|
|
'type' => 'keyword' // 或者 'keyword',根据需求选择
|
|
|
],
|
|
|
'email' => [
|
|
|
'type' => 'text' // email 通常使用 keyword 类型
|
|
|
]
|
|
|
]
|
|
|
],
|
|
|
'to' => ['type' => 'text'],
|
|
|
'cc' => ['type' => 'keyword'],
|
|
|
'bcc' => ['type' => 'keyword'],
|
|
|
'uid' => ['type' => 'integer'],
|
|
|
'udate' => ['type' => 'integer'],
|
|
|
'folder_id' => ['type' => 'integer'],
|
|
|
'email_id' => ['type' => 'integer'],
|
|
|
'size' => ['type' => 'integer'],
|
|
|
'recent' => ['type' => 'integer'],
|
|
|
'flagged' => ['type' => 'integer'],
|
|
|
'deleted' => ['type' => 'integer'],
|
|
|
'seen' => ['type' => 'integer'],
|
|
|
'draft' => ['type' => 'integer'],
|
|
|
'is_file' => ['type' => 'integer'],
|
|
|
'is_hots' => ['type' => 'integer'],
|
|
|
'is_auto' => ['type' => 'integer'],
|
|
|
'folder_as_int' => ['type' => 'integer'],
|
|
|
'postid' => ['type' => 'integer'],
|
|
|
'source' => ['type' => 'integer'],
|
|
|
'created_at' => ['type' => 'date'],
|
|
|
'updated_at' => ['type' => 'date'],
|
|
|
'description' => ['type' => 'keyword'],
|
|
|
'references' => ['type' => 'keyword']
|
|
|
]
|
|
|
],$index == 'email_lists_copy' ? [
|
|
|
'number_of_shards' => 21, // 设置分片数
|
|
|
'number_of_replicas' => 1, // 设置副本数 暂用内存 主片+副片*
|
|
|
]:[
|
|
|
'number_of_shards' => 1, // 设置分片数
|
|
|
'number_of_replicas' => 0, // 设置副本数 暂用内存 主片+副片*
|
|
|
]
|
|
|
);
|
|
|
}
|
|
|
// 暂停1秒在试
|
|
|
sleep(1);
|
|
|
return $this->setEsMap($index);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 同步数据到es
|
...
|
...
|
@@ -206,55 +265,7 @@ class SyncToEsCmd { |
|
|
$this->es->setIndex($index);
|
|
|
// 检查数据库是否存在
|
|
|
if(empty($this->checkEsIndex[$index])){
|
|
|
if(!$this->es->getMapping()){
|
|
|
$map = $this->es->putMapping([
|
|
|
'properties' => [
|
|
|
'subject' => ['type' => 'text'],
|
|
|
'from' => [
|
|
|
'type' => 'object', // 定义 from 字段为对象
|
|
|
'properties' => [
|
|
|
'name' => [
|
|
|
'type' => 'keyword' // 或者 'keyword',根据需求选择
|
|
|
],
|
|
|
'email' => [
|
|
|
'type' => 'text' // email 通常使用 keyword 类型
|
|
|
]
|
|
|
]
|
|
|
],
|
|
|
'to' => ['type' => 'text'],
|
|
|
'cc' => ['type' => 'keyword'],
|
|
|
'bcc' => ['type' => 'keyword'],
|
|
|
'uid' => ['type' => 'integer'],
|
|
|
'udate' => ['type' => 'integer'],
|
|
|
'folder_id' => ['type' => 'integer'],
|
|
|
'email_id' => ['type' => 'integer'],
|
|
|
'size' => ['type' => 'integer'],
|
|
|
'recent' => ['type' => 'integer'],
|
|
|
'flagged' => ['type' => 'integer'],
|
|
|
'deleted' => ['type' => 'integer'],
|
|
|
'seen' => ['type' => 'integer'],
|
|
|
'draft' => ['type' => 'integer'],
|
|
|
'is_file' => ['type' => 'integer'],
|
|
|
'is_hots' => ['type' => 'integer'],
|
|
|
'is_auto' => ['type' => 'integer'],
|
|
|
'folder_as_int' => ['type' => 'integer'],
|
|
|
'postid' => ['type' => 'integer'],
|
|
|
'source' => ['type' => 'integer'],
|
|
|
'created_at' => ['type' => 'date'],
|
|
|
'updated_at' => ['type' => 'date'],
|
|
|
'description' => ['type' => 'keyword'],
|
|
|
'references' => ['type' => 'keyword']
|
|
|
]
|
|
|
],$index == 'email_lists_copy' ? [
|
|
|
'number_of_shards' => 21, // 设置分片数
|
|
|
'number_of_replicas' => 1, // 设置副本数 暂用内存 主片+副片*
|
|
|
]:[
|
|
|
'number_of_shards' => 1, // 设置分片数
|
|
|
'number_of_replicas' => 0, // 设置副本数 暂用内存 主片+副片*
|
|
|
]
|
|
|
);
|
|
|
_echo("{$index} 创建索引 ".$map);
|
|
|
}
|
|
|
_echo("{$index} 创建索引 ".$this->setEsMap($index));
|
|
|
}
|
|
|
// 下次不在检查
|
|
|
$this->checkEsIndex[$index] = 1;
|
...
|
...
|
|