ElasticSearch: добавить переменную для построения динамического запроса в Elastic (PHP)

Я хочу поместить половину запроса в переменную $query и положить его в $params в ElasticSearch.

Это мое $query :

if (Input::has('_id')) {
$_id = $this->input['_id'];
$path = 'data';
$field = 'data.city';

// Querying city
if (Input::has('city')) {
$city = $this->input['city'];
$query = array('query'=> [
'bool' => [
'must' => [
[
'match' => [
'_id' => $_id
]
],
[
'nested' => [
'path' => $path,
'query' => [
'bool' => [
'must' => [
[
'match' => [
$field => $city
]
]
]
]
]
]
]
]
]
]);
}

И я хочу поместить эту переменную в $params как это:

$params = [
'index' => 'channels',
'type' => 'users',
'body' => [
'from' => $defaultPerPage * ($page - 1),
'size' => $defaultPerPage,
$query
]
];

Я стараюсь print_r($params) и получил правильный результат.
Но я всегда получаю уведомление об ошибке при попытке сделать запрос.
Кто-нибудь знает, как это сделать?

Спасибо

Ошибка :

{"error":"SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[6fZ0ud3kSTSYsMI-o-mg4w][channels][0]: SearchParseException[[channels][0]: from[0],size[10]: Parse Failure [Failed to parse source [{\"from\":0,\"size\":10,\"0\":{\"query\":{\"bool\":{\"must\":[{\"match\":{\"_id\":\"9121200asda121\"}},{\"nested\":{\"path\":\"data\",\"query\":{\"bool\":{\"must\":[{\"match\":{\"data.city\":\"california\"}}]}}}}]}}}}]]]; nested: SearchParseException[[channels][0]: from[0],size[10]: Parse Failure [No parser for element [0]]]; }{[W5E62t0EQ16lckCUnf8atw][channels][1]: RemoteTransportException[[Bima][inet[/10.200.7.69:9300]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[channels][1]: from[0],size[10]: Parse Failure [Failed to parse source [{\"from\":0,\"size\":10,\"0\":{\"query\":{\"bool\":{\"must\":[{\"match\":{\"_id\":\"9121200asda121\"}},{\"nested\":{\"path\":\"data\",\"query\":{\"bool\":{\"must\":[{\"match\":{\"data.city\":\"california\"}}]}}}}]}}}}]]]; nested: SearchParseException[[channels][1]: from[0],size[10]: Parse Failure [No parser for element [0]]]; }{[6fZ0ud3kSTSYsMI-o-mg4w][channels][2]: SearchParseException[[channels][2]: from[0],size[10]: Parse Failure [Failed to parse source [{\"from\":0,\"size\":10,\"0\":{\"query\":{\"bool\":{\"must\":[{\"match\":{\"_id\":\"9121200asda121\"}},{\"nested\":{\"path\":\"data\",\"query\":{\"bool\":{\"must\":[{\"match\":{\"data.city\":\"california\"}}]}}}}]}}}}]]]; nested: SearchParseException[[channels][2]: from[0],size[10]: Parse Failure [No parser for element [0]]]; }]","status":400}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]