Я работаю надasticsearch (2.3) и пытаюсь создать поисковый запрос. Для упругого поиска мне нужен JSON, но я начинаю с простого массива php и впоследствии кодирую его в JSON.
У меня проблема с созданием правильного формата массива.
Это небольшая часть кода, который я использую:
$params['body']['query']['filtered']['filter']['bool']['must']["term"]['pprCategories']= "category1";
$params['body']['query']['filtered']['filter']['bool']['must_not']['exists']['field'] = "field1";
С оператором if я добавляю новую строку:
$params['body']['query']['filtered']['filter']['bool']['must']['term']['country_name']= "country1";
Итак, общий код:
<code>$params['body']['query']['filtered']['filter']['bool']['must']["term"]['pprCategories']= "category1";
$params['body']['query']['filtered']['filter']['bool']['must_not']['exists']['field'] = "field1";
$params['body']['query']['filtered']['filter']['bool']['must']['term']['country_name']= "country1";
#output
echo "<pre>";
print_r(json_encode($params, JSON_PRETTY_PRINT));
echo "
";
Фактический результат, который я получаю из построенного мной запроса:
{
"body": {
"query": {
"filtered": {
"filter": {
"bool": {
"must": {
"term": {
"pprCategories": "category1",
"country_name": "country1"
}
},
"must_not": {
"exists": {
"field": "field1"
}
}
}
}
}
}
}
}
Однако желаемый результат будет следующим, т.е. с двумя элементами в массиве bool/must
:
{
"body": {
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"pprCategories": "category1"
}
},
{
"term": {
"country_name": "country1"
}
}
],
"must_not": {
"exists": {
"field": "field1"
}
}
}
}
}
}
}
}
Как вы можете видеть, массив bool/must
содержит два условия вместо одного: pprCategories и country_name - это два разных обязательных условия.
Спасибо за помощь!