ElasticSearch匹配查询多个方面PHP
问题描述:
我试图构建必须在多个方面查询,该阵列是这样的:ElasticSearch匹配查询多个方面PHP
$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中创建多个术语查询?
在此先感谢。
答
您需要添加额外的数组附上所有terms
查询
$params = [
'body' => [
'query' => [
"bool" => [
"must" => [
[
"terms" => [
"categories" => [
"Seating",
],
]
],
[
"terms" => [
"attributes.Color" => [
"Black",
],
]
]
],
"filter" => [
"range" => [
"price" => [
"gte" => 39,
"lte" => 2999,
],
],
],
],
],
'from' => 0,
'size' => 3,
],
];
为什么不相同组键值?这样的 “术语”=> [ “类别”=> [ “就座” ], “attributes.Color”=> [ “黑” ] ] –