Мне нужно создать следующий упругий поисковый запрос в php:
$parameters = [
'index' => 'myindex',
'from' => 0,
'size' => 60,
'body' => [
'query' => [
'bool' => [
'filter' => [[
'bool' => [
'must' => [
$myvariable,
['nested' => [
'path' => 'sh',
'query' => [
'bool' => [
'filter' => [
['term' => ['sh.keyword' => 'PK']]
]
]
]
]
]
]
]
]],
]
],
"sort" => [
["score" => ["mode" => "avg"]]
]
]
];
Где $ myvariable должен быть:
['bool'=>
['should'=>[
['term'=> ['id'=> {$id1}]],
['term'=> ['id'=> {$id2}]],
],
'minimum_should_match'=> 1
]
]
Я не хочу жестко кодировать значения, поскольку это полностью зависит от пользователя, выберет ли он / она упомянутые значения в раскрывающемся списке или нет.
Что я пробовал?
Я пытался создать внутреннюю часть, то есть термин часть:
$countofids = count($combined_array['ids']);
if ($countofids != 0) {
for ($i = 0; $i < $countofids ; $i++) {
if ($i == 0) {
$myvariable= array('term' => array('id' => $combined_array['ids'][$i]));
} else {
array_push($myvariable, $combined_array['ids'][$i]);
}
}
}
Но это не работает, как ожидалось. Я получаю:
['term'=> ['id'=> {$id1}]]
Но, кроме того, я не получаю требуемый результат. Более того, я не знаю, как разделить их запятой.
Кто-нибудь может предложить лучшее решение?