<?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
);
}
}
}
es 学习2 代码片段
最新推荐文章于 2023-12-22 19:14:54 发布