esService = Client::setEs($this->index_name); } /** * 查询商品列表 * @param $params */ public function list($params = [],$page = 1, $limit = 10) { return $this->esService ->select($this->field) // ->setDebug() ->like($params) ->from($page) ->size($limit) ->order(['goods_id' => 'desc']) ->query(); } public function count($params = [],$page = 1, $limit = 10) { return $this->esService // ->setDebug() ->like($params) ->from($page) ->size($limit) ->query(true); } /** * 更新商品 */ public function updateData($goods_id, $data) { return $this->esService->update($goods_id, $data); } /** * 查询商品详情 */ public function detail($goods_id) { 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 batchCreateData() { 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; } /** * 删除商品 */ public function delete($goods_id) { return $this->esService->deleteDoc($goods_id); } /** * 删除索引 */ public function deleteIndex() { return $this->esService->deleteIndexNew(); } /** * 创建商品Index * @return void * @throws Exception */ function createGoodsIndex() { $mapping = [ 'properties' => [ 'goods_id' => [ 'type' => 'keyword' ], 'goods_type' => [ 'type' => 'keyword' ], 'goods_name' => [ 'type' => 'text', "analyzer" => "ik_smart" ], 'goods_no' => [ 'type' => 'keyword', ], 'video_id' => [ 'type' => 'integer' ], 'brand_id' => [ 'type' => 'integer' ], 'video_cover_id' => [ 'type' => 'integer' ], 'selling_point' => [ 'type' => 'text', "analyzer" => "ik_smart" ], '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' ], 'data_type' => [ 'type' => 'integer' ], 'is_pool' => [ 'type' => 'integer' ], 'is_self' => [ 'type' => 'integer' ], 'link' => [ 'type' => 'keyword' ], 'origin_goods_id' => [ 'type' => 'integer' ], 'link_other' => [ 'type' => 'text' ], 'goods_no_other' => [ 'type' => 'keyword' ], 'region' => [ 'type' => 'text' ], 'region_text' => [ 'type' => 'text' ], 'specific_value' => [ 'type' => 'keyword' ], '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' ] ] ]; return $this->esService->createIndexNew($mapping); } /** * 设置分词字段 */ public function analyze() { return $this->esService->analyze('goods_name'); } }