es 学习2 代码片段

19 篇文章 0 订阅
12 篇文章 0 订阅
<?php

namespace App\Http\Utils;

use Illuminate\Http\Request;

use Search;
use Elasticsearch\Client;

/**
* fyj ES 工具类
* 20160624
*/
class ESUtil
{
	/**
	 * @param  index 索引
	 * @param  param 排序 搜索内容
	 */
	public static function es_sort($param)
	{
		$client = new Client();
		return $client->search($param);
	}

	/**
	 * 获取 对应
	 */
	public static function es_query($index,$param,$limit)
	{
		$limit = empty($limit)?20:$limit;
		return Search::index($index)->search(config('esparam.query_param'),$param)
		->limit($limit)->get();
	}

	/**
	 * 查询所有内容
	 * @param  搜索内容
	 * 
	 */
	public static function es_query_all($index,$param)
	{
		$search = Search::index($index);

		return $search->search(null,$param)->get();
	}


	/**
	 * 获取  
	 * fyj
	 * 20160630
	 * index 索引 
	 * param 收索内容
	 * args  过滤条件
	 */
	public static function es_query_ads($index,$param,$args)
	{
		print_r($index);
		echo '<br/>';

		echo $param.'<br/>';


		$curl_param = config('esjson.between');

		

		dd($curl_param);
		dd($args);

	}


	/**
	 * es 收索 数据
	 * @author [fyj]
	 * @param  [type] $sort    [排序]
	 * @param  [type] $limit   [获取条数]
	 * @param  [type] $orderBy []
	 * @param  [type] $role    [角色] 
	 * @param  [type] $param   [查询内容]
	 */
	public static function es_param_parse_index($sort,$limit,$orderBy,$role,$param)
	{
		$curl_param = config('esjson.between');

		$curl_param['sort'] = [
	            $orderBy=>[
	                'order'=>$sort
	            ]
	        ];

		$match_range[] =  [
	                        'match'=>[
	                            'role'=>$role
	                         ]
	                       ];
		if(is_array($param))
		{

		}else{
			$match_range[] = [
	                        'match'=>[
	                                'host'=>$param
	                                 ]
	                        ];
		}

        $curl_param['size'] = empty($limit)?20:$limit;
        
        foreach ($curl_param['query']['bool']['must'] as $key => $value) {
        
            foreach ($value as $k => $v) {

                if($k=='range')
                {
                    unset($curl_param['query']['bool']['must'][$key]);
                }
                if($k=='match')
                {
                   
                    $curl_param['query']['bool']['must'][$key] = $match_range;
                }
            }
        }

        return $curl_param;

	}

	/**
	 * fyj  DSL 格式
	 * 20160629
	 * @param  [type] $limit   [限制]
	 * @param  [type] $orderBy [排序]
	 * @param  [type] $param   [数组]
	 */
	public static function es_param_parse_search($limit,$orderBy,$param)
	{
		$curl_param = config('esjson.between');


		$curl_param['sort'] = [
	            $orderBy=>[
	                'order'=>'desc'
	            ]
	        ];

        $match_range=[];

        if($param)
        {
        	foreach ($param as $key => $value) {
	        	$match_range[] = ['match'=>[
	        		$key=>$value
	        	]];
	        }
        }
       

        $curl_param['size'] = empty($limit)?100:$limit;
        

        foreach ($curl_param['query']['bool']['must'] as $key => $value) {
        
            foreach ($value as $k => $v) {

                if($k=='range')
                {
                    unset($curl_param['query']['bool']['must'][$key]);
                }
                if($k=='match')
                {
                   
                    $curl_param['query']['bool']['must'][$key] = $match_range;
                }
            }
        }

        return $curl_param;

	}


	

	


	/**
	* index 索引 laravel 组建 
	* filed 搜索字段  param 收索内容 
	* range 反问  gt 大于 小雨 或 等于 range_filed 待比较字段
	*/
	public static function  SearchRange($index,$filed,$param,$range_filed,$range_param,$gt)
	{
		return Search::index($index)->search($filed,$param)->where($range_filed,$range_param,$gt)->get();

	}
	/**
	* index 索引  
	* filed 搜索字段  可以是数组 或者是 字段
	* param 收索内容 laravel 组建
	*/
	public static function  SearchResult($index,$filed,$param)
	{
		return Search::index($index)->search($filed,$param)->get();
	}

	public static function SearchLimit($index,$filed,$param,$limit)
	{
		$search = Search::index($index)->search($filed,$param);
		if($limit)
		{
			$search = $search->limit($limit);
		}
		return $search->get();
	}
//laravel 组建使用
	public static function search_domains($role, $role_value, $type, $q, $limit = 20){

		
	    $map['filter'] = $role;
	    $map['filter_value'] = $role_value;

	    $map['mode'] = 1;

	    $map['groupby'] = $type;
	    $map['limit']   = $limit;
	    $map['groupbysort'] = $type.' ASC';

	    Search::index('domain')->search('host')->where('ispublisher',1)

	    ->limit($limit)
	    ->get();

	    $result = search('@'.$type.'_name '.$q, "domains", $map);

	    // print_r($result);
	    if(!empty($result['matches'])){

	        $data = array();
	        foreach ($result['matches'] as $key => $value) {
	            $data[] = array(
	                    'host'  => $value['attrs'][$type.'_host'],
	                    'name'  => $value['attrs'][$type.'_name'],
	                    'count' => $value['attrs']['@count']
	                );
	        }

	        import("ORG.Util.Page");

	        $page = new Page($result['total_found'], $limit);

	        return array(
	                'data'          => $data,
	                'total'         => $result['total_found'],
	                'total_pages'   => $page->totalPages,
	                'current_page'  => $page->nowPage
	            );
	    }


	}




	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值