/**
* 根据标签ID获取相关专辑
*
* @param array $tag_ids 标签ID, 支持多个
* @param int $offset 偏移量
* @param int $limit 每页数量
* * @param array $sort 排序
* @param array $filter_types 专辑类型
* @param array $albumContentTypes 专辑内容类型
*
* @return array ['total' => 总数, 'data' => [专辑id 1, ...]]
*/
public static function searchAlbumByTagIds1(array $tag_ids, int $offset = 0, int $limit = 10, $sort = [], $filter_types = [], $albumContentTypes = []): array
{
$query = [
"query" => [
"bool" => [
"must" => [
[
"term" => [
"status" => 1
],
],
// [
// “terms” => [ //包含一个就可以
// “tags” =>
t
a
g
i
d
s
/
/
]
,
/
/
]
,
]
]
]
,
"
s
o
r
t
"
=
>
s
e
l
f
:
:
g
e
t
S
o
r
t
(
tag_ids // ], // ], ] ] ], "sort" => self::getSort(
tagids//],//],]]],"sort"=>self::getSort(sort),
“_source” => “_id”,
“from” => $offset,
“size” => $limit
];
foreach ($tag_ids as $tag_id) { //完全匹配
$query['query']['bool']['must'][] = [
"term" => [
"tags" => [
"value" => $tag_id
]
]
];
}
if (!empty($albumContentTypes)) {
$query['query']['bool']['must'][] = [
'terms' => [
'albumcontenttype' => $albumContentTypes
]
];
}
if (count($filter_types) > 0) {
$query["query"]["bool"]["filter"] = [
"bool" => [
"must" => [
"terms" => [
"albumtype" => $filter_types
]
]
]
];
}
$ret = self::query($query);
return self::getFormatDataWithNoSource($ret);
}
数组里面的元素匹配
tags里面包含任意一个元素就可以进进行匹配了
// [
// “terms” => [ //包含一个就可以
// “tags” => $tag_ids
// ],
tags里面包含所有元素才可以进行匹配
foreach ($tag_ids as $tag_id) { //完全匹配
$query[‘query’][‘bool’][‘must’][] = [
“term” => [
“tags” => [
“value” => $tag_id
]
]
];
}