// 分页条件查询
public function actionList()
{
$reallyParams = $this->reallyParams;
$page = empty($reallyParams['page']) ? 1 : $reallyParams['page'];
$pageSize = empty($reallyParams['page_size']) ? 10 : $reallyParams['page_size'];
$offset = max(0, $page - 1) * $pageSize;
$client = ClientBuilder::create()->setHosts(ArrayHelper::getColumn(Yii::$app->elasticsearch->nodes, 'http_address'))->build();
$params = [
'index' => 'official_news',
'type' => '_doc',
'body' => [
"track_total_hits" => true,
"from" => $offset,
"size" => $pageSize,
"sort" => [
[
"news_id" => [
"order" => "ASC"
],
]
]
]
];
$where = [];
// 语言类型:1:中文 2:繁体 3:英文
if (empty($reallyParams['language_type'])) {
return $this->jsonError('语言类型不能空!');
}
// 默认查询中文
$language_type = empty($reallyParams['language_type']) ? 1 : $reallyParams['language_type'];
if(is_numeric($language_type) && in_array($language_type, [1, 2, 3])){
$where[] = [
"term" => [
"language_type" => $language_type
]
];
}
// 平台类型: 1: pc 2:手机 3 pc和m
if (empty($reallyParams['platform_type'])) {
return $this->jsonError('平台类型不能空!');
}
// 默认查询pc和m
$platform_type = empty($reallyParams['platform_type']) ? 3 : $reallyParams['platform_type'];
if(is_numeric($platform_type) && in_array($platform_type, [1, 2, 3])){
$where[] = [
"term" => [
"platform_type" => $platform_type
]
];
}
//组合查询条件
if(!empty($where)){
$params['body']['query']['bool']['must'] = $where;
}
$list = $client->search($params);
$totalCount = ArrayHelper::getValue($list, 'hits.total.value', 0);
$list = ArrayHelper::getValue($list, 'hits.hits');
$list = ArrayHelper::getColumn($list, '_source');
$data = [
'list' => $list,
'total_count' => $totalCount,
'page' => $page,
'page_size' => $pageSize
];
return $this->jsonSuccess($data);
}