|
|
|
@ -8,68 +8,46 @@ class GoodsEs |
|
|
|
|
{ |
|
|
|
|
private Client $esService; |
|
|
|
|
|
|
|
|
|
private $index_name = 'goods_list'; |
|
|
|
|
private string $index_name = 'goods_list'; |
|
|
|
|
|
|
|
|
|
public function __construct() |
|
|
|
|
{ |
|
|
|
|
$this->esService = Client::setEs('goods_list'); |
|
|
|
|
$this->esService = Client::setEs($this->index_name); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 查询商品列表 |
|
|
|
|
* @param $params |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public function list($params) |
|
|
|
|
public function list($params = [],$page = 1, $limit = 10) |
|
|
|
|
{ |
|
|
|
|
$page = 1; |
|
|
|
|
$limit = 10; |
|
|
|
|
// $body = [ |
|
|
|
|
// 'query' => [ |
|
|
|
|
// 'match_all' => [] |
|
|
|
|
// ], |
|
|
|
|
// 'from' => ($page - 1) * $limit, |
|
|
|
|
// 'size' => $limit, |
|
|
|
|
// 'sort' => [ |
|
|
|
|
// 'id' => [ |
|
|
|
|
// 'order' => 'desc' |
|
|
|
|
// ] |
|
|
|
|
// ] |
|
|
|
|
// ]; |
|
|
|
|
|
|
|
|
|
$data = $this->esService |
|
|
|
|
return $this->esService |
|
|
|
|
// ->setDebug() |
|
|
|
|
->equal(['intro' => '']) |
|
|
|
|
->from(1) |
|
|
|
|
->size(10) |
|
|
|
|
->order(['id' => 'desc']) |
|
|
|
|
->like($params) |
|
|
|
|
->from($page) |
|
|
|
|
->size($limit) |
|
|
|
|
->order(['goods_id' => 'desc']) |
|
|
|
|
->query(); |
|
|
|
|
|
|
|
|
|
dd($data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function count($params = [],$page = 1, $limit = 10) |
|
|
|
|
{ |
|
|
|
|
return $this->esService |
|
|
|
|
// ->setDebug() |
|
|
|
|
->like($params) |
|
|
|
|
->from($page) |
|
|
|
|
->size($limit) |
|
|
|
|
->query(true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 更新商品 |
|
|
|
|
*/ |
|
|
|
|
public function update($goods_id) |
|
|
|
|
public function updateData($goods_id, $data) |
|
|
|
|
{ |
|
|
|
|
$goods_id = 1; |
|
|
|
|
$doc = [ |
|
|
|
|
'id' => $goods_id, |
|
|
|
|
'video_title' => '少爷的甜蜜良药', |
|
|
|
|
'director' => '吴宇森', |
|
|
|
|
'intro' => '吴宇森导演的《少爷的甜蜜良药》是吴宇森导演的经典作品,讲述了一个boyfriend和girlfriend的故事,boyfriend因为工作原因,被拒了girlfriend的offer,然后boyfriend和girlfriend一起去一个地方,然后boyfriend和girlfriend', |
|
|
|
|
'cover' => 'https://oss-duanju-file.luochen.com/cover/202404/62249c6a-5f57-45cf-90ac-be6de5890ce0.jpg?x-oss-process=image/resize,m_fixed,h_400,w_360', |
|
|
|
|
'episode_count' => '12', |
|
|
|
|
'wechat_vid' => 'wx_vid_1', |
|
|
|
|
'duration' => '01:02:03', |
|
|
|
|
'service_types' => '2,3', |
|
|
|
|
]; |
|
|
|
|
return $this->esService->update($goods_id, $doc); |
|
|
|
|
return $this->esService->update($goods_id, $data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -77,32 +55,57 @@ class GoodsEs |
|
|
|
|
*/ |
|
|
|
|
public function detail($goods_id) |
|
|
|
|
{ |
|
|
|
|
$goods_id = 1; |
|
|
|
|
$res = $this->esService->getDoc($goods_id); |
|
|
|
|
var_dump($res); |
|
|
|
|
return $this->esService->getDoc($goods_id); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 创建商品 |
|
|
|
|
*/ |
|
|
|
|
public function createData($goods_id, $goods_list) |
|
|
|
|
{ |
|
|
|
|
$goods_list['create_time'] = $goods_list['create_time'] ? strtotime($goods_list['create_time']) * 1000 : time() * 1000; |
|
|
|
|
$goods_list['update_time'] = $goods_list['update_time'] ? strtotime($goods_list['update_time']) * 1000 : time() * 1000; |
|
|
|
|
$goods_list['delivery_type'] = implode(',', $goods_list['delivery_type']); |
|
|
|
|
return $this->esService->addDoc($goods_id, $goods_list)->asArray(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 批量创建商品 |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public function create($goods_id) |
|
|
|
|
public function batchCreateData() |
|
|
|
|
{ |
|
|
|
|
$goods_id = 1; |
|
|
|
|
$doc = [ |
|
|
|
|
'id' => $goods_id, |
|
|
|
|
'video_title' => '少爷的甜蜜良药', |
|
|
|
|
'director' => '吴宇森', |
|
|
|
|
'intro' => '吴宇森导演的《少爷的甜蜜良药》是吴宇森导演的经典作品,讲述了一个boyfriend和girlfriend的故事,boyfriend因为工作原因,被拒了girlfriend的offer,然后boyfriend和girlfriend一起去一个地方,然后boyfriend和girlfriend', |
|
|
|
|
'cover' => 'https://oss-duanju-file.luochen.com/cover/202404/62249c6a-5f57-45cf-90ac-be6de5890ce0.jpg?x-oss-process=image/resize,m_fixed,h_400,w_360', |
|
|
|
|
'episode_count' => '12', |
|
|
|
|
'wechat_vid' => 'wx_vid_1', |
|
|
|
|
'duration' => '01:02:03', |
|
|
|
|
'service_types' => '2,3', |
|
|
|
|
]; |
|
|
|
|
$res = $this->esService->addDoc($goods_id, $doc); |
|
|
|
|
var_dump($res); |
|
|
|
|
for ($page = 1; $page<=134; $page++) |
|
|
|
|
{ |
|
|
|
|
$this->addData($page); |
|
|
|
|
sleep(1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function addData($page) |
|
|
|
|
{ |
|
|
|
|
$goods_list = \app\common\model\Goods::where('goods_id', '>', 368257) |
|
|
|
|
// ->order('goods_id desc') |
|
|
|
|
->page($page) |
|
|
|
|
->limit(2000) |
|
|
|
|
->select() |
|
|
|
|
->toArray(); |
|
|
|
|
// |
|
|
|
|
$i = 0; |
|
|
|
|
foreach ($goods_list as $value) |
|
|
|
|
{ |
|
|
|
|
$value['create_time'] = strtotime($value['create_time']) * 1000; |
|
|
|
|
$value['update_time'] = strtotime($value['update_time']) * 1000; |
|
|
|
|
$value['delivery_type'] = implode(',', $value['delivery_type']); |
|
|
|
|
$res = $this->esService->addDoc($value['goods_id'], $value)->asArray(); |
|
|
|
|
if($res['result'] == 'created') |
|
|
|
|
{ |
|
|
|
|
$i++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
echo('同步成功'.$i.'条数据').PHP_EOL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -110,8 +113,15 @@ class GoodsEs |
|
|
|
|
*/ |
|
|
|
|
public function delete($goods_id) |
|
|
|
|
{ |
|
|
|
|
$res = $this->esService->deleteDoc($goods_id); |
|
|
|
|
var_dump($res); |
|
|
|
|
return $this->esService->deleteDoc($goods_id); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 删除索引 |
|
|
|
|
*/ |
|
|
|
|
public function deleteIndex() |
|
|
|
|
{ |
|
|
|
|
return $this->esService->deleteIndexNew(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -126,41 +136,255 @@ class GoodsEs |
|
|
|
|
$mapping = [ |
|
|
|
|
'properties' => [ |
|
|
|
|
'goods_id' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'goods_type' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'director' => [ |
|
|
|
|
'goods_name' => [ |
|
|
|
|
'type' => 'text', |
|
|
|
|
"analyzer" => "ik_smart" |
|
|
|
|
], |
|
|
|
|
'intro' => [ |
|
|
|
|
'goods_no' => [ |
|
|
|
|
'type' => 'keyword', |
|
|
|
|
], |
|
|
|
|
'video_id' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'brand_id' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'video_cover_id' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'selling_point' => [ |
|
|
|
|
'type' => 'text', |
|
|
|
|
"analyzer" => "ik_smart" |
|
|
|
|
], |
|
|
|
|
'cover' => [ |
|
|
|
|
'spec_type' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'cost_price_min' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'goods_price_min' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'goods_price_max' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'line_price_min' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'line_price_max' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'stock_total' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'deduct_stock_type' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_restrict' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'restrict_total' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'restrict_single' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'content' => [ |
|
|
|
|
'type' => 'text', |
|
|
|
|
], |
|
|
|
|
'sales_initial' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'delivery_id' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_points_gift' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_points_discount' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_alone_points_discount' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'points_discount_config' => [ |
|
|
|
|
'type' => 'text' |
|
|
|
|
], |
|
|
|
|
'is_enable_grade' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_alone_grade' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'alone_grade_equity' => [ |
|
|
|
|
'type' => 'text' |
|
|
|
|
], |
|
|
|
|
'is_ind_dealer' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'dealer_money_type' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'first_money' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'second_money' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'third_money' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'is_ind_delivery_type' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'delivery_type' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'status' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'sort' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'store_id' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'merchant_id' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'create_time' => [ |
|
|
|
|
'type' => 'date', |
|
|
|
|
'format' => 'yyyy-MM-dd HH:mm:ss' |
|
|
|
|
], |
|
|
|
|
'update_time' => [ |
|
|
|
|
'type' => 'date', |
|
|
|
|
'format' => 'yyyy-MM-dd HH:mm:ss' |
|
|
|
|
], |
|
|
|
|
'is_brand' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_new' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'paihang' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'remaizhishu' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'spu_id' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'channel' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'unicode' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'is_in_store' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'profit' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'profit_rate' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'cmmdty_model'=> [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'remark' => [ |
|
|
|
|
'type' => 'text' |
|
|
|
|
], |
|
|
|
|
'sale_areas' => [ |
|
|
|
|
'type' => 'text' |
|
|
|
|
], |
|
|
|
|
'sale_areas_id' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'episode_count' => [ |
|
|
|
|
'data_type' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_pool' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_self' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'link' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'wechat_vid' => [ |
|
|
|
|
'origin_goods_id' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'link_other' => [ |
|
|
|
|
'type' => 'text' |
|
|
|
|
], |
|
|
|
|
'goods_no_other' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'duration' => [ |
|
|
|
|
'region' => [ |
|
|
|
|
'type' => 'text' |
|
|
|
|
], |
|
|
|
|
'region_text' => [ |
|
|
|
|
'type' => 'text' |
|
|
|
|
], |
|
|
|
|
'specific_value' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'service_types' => [ |
|
|
|
|
'cate_status' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_check' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'goods_source' => [ |
|
|
|
|
'type' => 'keyword' |
|
|
|
|
], |
|
|
|
|
'delivery_time' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'distribute_price' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'shop_price' => [ |
|
|
|
|
'type' => 'float' |
|
|
|
|
], |
|
|
|
|
'is_has_banner' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_has_detail' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'is_jingpin' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'sale_time' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
], |
|
|
|
|
'markup_rate' => [ |
|
|
|
|
'type' => 'integer' |
|
|
|
|
] |
|
|
|
|
] |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
$res = $this->esService->createIndexNew($mapping); |
|
|
|
|
var_dump($res); |
|
|
|
|
return $this->esService->createIndexNew($mapping); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 设置分词字段 |
|
|
|
|
*/ |
|
|
|
|
public function analyze() |
|
|
|
|
{ |
|
|
|
|
return $this->esService->analyze('goods_name'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |