ElasticSearch соответствует запросу несколько терминов переполнение стека

Я пытаюсь построить запрос на несколько терминов, массив выглядит так:

$params = [
'body' => [
'query' => [
"bool" => [
"must" => [
"terms" => [
"categories" => [
"Seating",
],
],
"terms" => [
"attributes.Color" => [
"Black",
],
]
],
"filter" => [
"range" => [
"price" => [
"gte" => 39,
"lte" => 2999,
],
],
],
],
],
'from' => 0,
'size' => 3,
],
];

Который представлен в JSON следующим образом:

{
"query": {
"bool": {
"must": {
"terms": {
"attributes.Color": ["Black"]
}
},
"filter": {
"range": {
"price": {
"gte": "39",
"lte": "2999"}
}
}
}
},
"from": 0,
"size": 3
}

Проблема в том, что объекты JSON представлены в PHP как массивы, поэтому, если я установлю ключ для одного массива, он будет переписан. Есть ли у вас какие-либо идеи о том, как создать запрос с несколькими терминами в PHP?

Заранее спасибо.

3

Решение

Вам нужно добавить дополнительный массив для включения всех ваших terms запросы

$params = [
'body' => [
'query' => [
"bool" => [
"must" => [
[
"terms" => [
"categories" => [
"Seating",
],
]
],
[
"terms" => [
"attributes.Color" => [
"Black",
],
]
]
],
"filter" => [
"range" => [
"price" => [
"gte" => 39,
"lte" => 2999,
],
],
],
],
],
'from' => 0,
'size' => 3,
],
];
3

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

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

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