作者 邓超

es

@@ -190,6 +190,65 @@ class SyncToEsCmd { @@ -190,6 +190,65 @@ class SyncToEsCmd {
190 public $checkEsIndex = []; 190 public $checkEsIndex = [];
191 191
192 192
  193 + public function setEsMap($index){
  194 + $this->es->setIndex($index);
  195 + if($this->es->getMapping()){
  196 + return true;
  197 + }
  198 +
  199 + if(redis()->add('setmaplock:'.$index,1,20)){
  200 + return $this->es->putMapping([
  201 + 'properties' => [
  202 + 'subject' => ['type' => 'text'],
  203 + 'from' => [
  204 + 'type' => 'object', // 定义 from 字段为对象
  205 + 'properties' => [
  206 + 'name' => [
  207 + 'type' => 'keyword' // 或者 'keyword',根据需求选择
  208 + ],
  209 + 'email' => [
  210 + 'type' => 'text' // email 通常使用 keyword 类型
  211 + ]
  212 + ]
  213 + ],
  214 + 'to' => ['type' => 'text'],
  215 + 'cc' => ['type' => 'keyword'],
  216 + 'bcc' => ['type' => 'keyword'],
  217 + 'uid' => ['type' => 'integer'],
  218 + 'udate' => ['type' => 'integer'],
  219 + 'folder_id' => ['type' => 'integer'],
  220 + 'email_id' => ['type' => 'integer'],
  221 + 'size' => ['type' => 'integer'],
  222 + 'recent' => ['type' => 'integer'],
  223 + 'flagged' => ['type' => 'integer'],
  224 + 'deleted' => ['type' => 'integer'],
  225 + 'seen' => ['type' => 'integer'],
  226 + 'draft' => ['type' => 'integer'],
  227 + 'is_file' => ['type' => 'integer'],
  228 + 'is_hots' => ['type' => 'integer'],
  229 + 'is_auto' => ['type' => 'integer'],
  230 + 'folder_as_int' => ['type' => 'integer'],
  231 + 'postid' => ['type' => 'integer'],
  232 + 'source' => ['type' => 'integer'],
  233 + 'created_at' => ['type' => 'date'],
  234 + 'updated_at' => ['type' => 'date'],
  235 + 'description' => ['type' => 'keyword'],
  236 + 'references' => ['type' => 'keyword']
  237 + ]
  238 + ],$index == 'email_lists_copy' ? [
  239 + 'number_of_shards' => 21, // 设置分片数
  240 + 'number_of_replicas' => 1, // 设置副本数 暂用内存 主片+副片*
  241 + ]:[
  242 + 'number_of_shards' => 1, // 设置分片数
  243 + 'number_of_replicas' => 0, // 设置副本数 暂用内存 主片+副片*
  244 + ]
  245 + );
  246 + }
  247 + // 暂停1秒在试
  248 + sleep(1);
  249 + return $this->setEsMap($index);
  250 + }
  251 +
193 252
194 /** 253 /**
195 * 同步数据到es 254 * 同步数据到es
@@ -206,55 +265,7 @@ class SyncToEsCmd { @@ -206,55 +265,7 @@ class SyncToEsCmd {
206 $this->es->setIndex($index); 265 $this->es->setIndex($index);
207 // 检查数据库是否存在 266 // 检查数据库是否存在
208 if(empty($this->checkEsIndex[$index])){ 267 if(empty($this->checkEsIndex[$index])){
209 - if(!$this->es->getMapping()){  
210 - $map = $this->es->putMapping([  
211 - 'properties' => [  
212 - 'subject' => ['type' => 'text'],  
213 - 'from' => [  
214 - 'type' => 'object', // 定义 from 字段为对象  
215 - 'properties' => [  
216 - 'name' => [  
217 - 'type' => 'keyword' // 或者 'keyword',根据需求选择  
218 - ],  
219 - 'email' => [  
220 - 'type' => 'text' // email 通常使用 keyword 类型  
221 - ]  
222 - ]  
223 - ],  
224 - 'to' => ['type' => 'text'],  
225 - 'cc' => ['type' => 'keyword'],  
226 - 'bcc' => ['type' => 'keyword'],  
227 - 'uid' => ['type' => 'integer'],  
228 - 'udate' => ['type' => 'integer'],  
229 - 'folder_id' => ['type' => 'integer'],  
230 - 'email_id' => ['type' => 'integer'],  
231 - 'size' => ['type' => 'integer'],  
232 - 'recent' => ['type' => 'integer'],  
233 - 'flagged' => ['type' => 'integer'],  
234 - 'deleted' => ['type' => 'integer'],  
235 - 'seen' => ['type' => 'integer'],  
236 - 'draft' => ['type' => 'integer'],  
237 - 'is_file' => ['type' => 'integer'],  
238 - 'is_hots' => ['type' => 'integer'],  
239 - 'is_auto' => ['type' => 'integer'],  
240 - 'folder_as_int' => ['type' => 'integer'],  
241 - 'postid' => ['type' => 'integer'],  
242 - 'source' => ['type' => 'integer'],  
243 - 'created_at' => ['type' => 'date'],  
244 - 'updated_at' => ['type' => 'date'],  
245 - 'description' => ['type' => 'keyword'],  
246 - 'references' => ['type' => 'keyword']  
247 - ]  
248 - ],$index == 'email_lists_copy' ? [  
249 - 'number_of_shards' => 21, // 设置分片数  
250 - 'number_of_replicas' => 1, // 设置副本数 暂用内存 主片+副片*  
251 - ]:[  
252 - 'number_of_shards' => 1, // 设置分片数  
253 - 'number_of_replicas' => 0, // 设置副本数 暂用内存 主片+副片*  
254 - ]  
255 - );  
256 - _echo("{$index} 创建索引 ".$map);  
257 - } 268 + _echo("{$index} 创建索引 ".$this->setEsMap($index));
258 } 269 }
259 // 下次不在检查 270 // 下次不在检查
260 $this->checkEsIndex[$index] = 1; 271 $this->checkEsIndex[$index] = 1;