作者 邓超

es

... ... @@ -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;
... ...