我在将用于弹性搜索的一些查询转换为PHP可读查询时遇到了一些麻烦。
例如,这个简单的查询有效:
$query = $elastic->search([
body' => [
'query' => [
'match' => [
'myfield' => 'mymatchingresult'
]
]
]
]);
但是我想要上班的内容如下。没有错误,它只是没有运行。我不能理解结构。相同的查询,如果置于像谷歌扩展意义的东西似乎工作。 (使用php' =>'转换为':'等。)
$query = $elastic->search([
'body' => [
'query' => [
'filtered' => [
'query' => [
'query_string' => [
'query' => '*',
'analyze_wildcard' => 'true'
]
],
'filter' => [
'bool' => [
'must' => [
'query' => [
'query_string' => [
'analyze_wildcard' => 'true',
'query' => 'cn:name'
]
],
'range' => [
'@timestamp' => [
'from' => '2012-05-01',
'to' => '2016-05-01'
]
]
]
]
]
]
]
]
]);
谢谢你的帮助! -John
答案 0 :(得分:0)
据我所知,bool/must
过滤器中的约束必须用方括号括起来,即bool/must
应该是纯数组,而不是关联数组。
像这样:
$query = $elastic->search([
'body' => [
'query' => [
'filtered' => [
'query' => [
'query_string' => [
'query' => '*',
'analyze_wildcard' => 'true'
]
],
'filter' => [
'bool' => [
'must' => [
[
'query' => [
'query_string' => [
'analyze_wildcard' => 'true',
'query' => 'cn:name'
]
]
],
[
'range' => [
'@timestamp' => [
'from' => '2012-05-01',
'to' => '2016-05-01'
]
]
]
]
]
]
]
]
]
]);