Теперь, когда я ищу, я также передаю несколько идентификаторов проектов в качестве входных данных. Для всех других таблиц (индексированные данные) поиск должен вернуться, когда их столбец «project_id» соответствует любому идентификатору проекта, который я передаю в моих входных данных. Только из индексированных данных типа «продукты» поиск должен возвращать их только в том случае, если все переданные идентификаторы проектов присутствуют в значении, разделенном запятыми.
Например...
if Данные столбца project_ids равны «1,4,5», тогда поиск (массивов) «1,5», «1» или «1,4» и т. д. должен вернуть эти данные о продукте. Но поиск «1,7» или «4,6» не должен возвращать никаких данных.
В том же случае из другого типа индексированных данных для поиска «1,5 (как массив)» он должен возвращать все данные, имеющие столбец «project_id» с любым переданным значением. если идентификатор проекта равен 1 или 5, данные должны вернуться. я использую PHP.
Пытаюсь настроить такой фильтр..
Код: Выделить всё
$terms_group = [];
foreach ([ARRAY_OF_PROJECT_IDS] as $project_id_for_term) {
$terms_group[] = [
'term' => [
'project_ids' => $project_id_for_term
]
];
}
$filter = [
'bool' => [
'minimum_should_match' => 1,
'should' => [
[
'bool' => [
'must' => [
[
'terms' => [
'project_id' => [ARRAY_OF_PROJECT_IDS]
]
]
],
'must_not' => [
[
'terms' => [
'table_name.keyword' => ['products']
]
]
]
]
]
],
'should' => [
[
'bool' => [
'must' => [
[
'terms' => [
'table_name' => ['products']
]
]
],
'must_not' => [
[
'terms' => [
'table_name.keyword' => ['projects', 'city', 'states', 'parks', 'contracts', 'reports']
]
]
],
'must' => $terms_group
]
]
]
]
];
Подробнее здесь: https://stackoverflow.com/questions/788 ... conditions
Мобильная версия