【发布时间】:2015-05-17 12:25:32
【问题描述】:
我正在使用 Laravel 和 ES 并尝试构建动态查询。
但以下不起作用:
$query[] = ['term' => ['city' => 1]];
$query[] = ['term' => ['state' => 2]];
$query[] = ['range' => ['price' => ['lte' => 2]]];
$asd = ['filtered' => [
'query' => [
'match' => ['title' => Input::get('query')]
],
'filter'=> [
'bool' => [
'must' => [
['term' => [ 'is_active' => 1] ],
[ 'range' => [
'end_date' => [
'from' => 'now'
]
]
],
$query
]
]
],
],];
echo json_encode($asd);
这会将 $query[] 错误地附加到 $asd 中,例如:
{"term":{"is_active":1}},
{"range":{"end_date":{"from":"now"}}},
[
{"term":{"city":1}},
{"term":{"state":2}},
{"range":{"price":{"lte":2}}}
]
我想如何附加它:
{"term":{"is_active":1}},
{"range":{"end_date":{"from":"now"}}},
{"term":{"city":1}},
{"term":{"state":2}},
{"range":{"price":{"lte":2}}}
周围没有 []。
已解决:
$asd = ['filtered' => [
'query' => [
'match' => ['title' => Input::get('query')]
],
'filter'=> [
'bool' => [
'must' =>
$query
]
],
],];
【问题讨论】:
-
[]表示对象在数组中。没有括号,它就不是合法的 json。 -
@Jite [] 不应该在其中,如果我发送该查询,ES 将返回错误。检查我的更新。
-
什么是 ES?为什么它会要求无效的 json?
-
Elasticsearch elastic.co ,有没有办法将我的查询转换为第二个?谢谢
-
我很确定弹性搜索不会要求您提供无效的 json。你得到什么错误?难道每个对象都应该作为一个单独的请求发送?
标签: php mysql arrays laravel elasticsearch