我有两个简单的要求。但是在一起,它不再起作用了。
我使用elasticsearch 1.4和drupal 7。
该查询有效,结果正常:
$searchParams = [
'body' => [
"from"=> 0,
"size"=> 30000,
'query' => [
'match'=> [
'title' => [
'query' => "vivre et comprendre le cancer",
'operator' => "and"
]
]
]
]
];
第二个查询有效并且结果正常:
$searchParams = [
'body' => [
"from"=> 0,
"size"=> 30000,
'query' => [
'filtered'=> [
'filter' => [
'bool' => [
'must' => [
'terms' => [
'field_support' => [105,106,1896,1897]
]
]
]
]
]
]
]
];
但在一起,我有一个错误:嵌套:ElasticsearchParseException [期望的字段名,但得到START_OBJECT \“filtered \”];
$searchParams = [
'body' => [
"from"=> 0,
"size"=> 30000,
'query' => [
'match'=> [
'title' => [
'query' => "vivre et comprendre le cancer",
'operator' => "and"
]
],
'filtered'=> [
'filter' => [
'bool' => [
'must' => [
'terms' => [
'field_support' => [105,106,1896,1897]
]
]
]
]
]
]
]
];
有人可以帮我吗?谢谢
最佳答案
您需要将match
查询移到filtered > query
内部
$searchParams = [
'body' => [
"from"=> 0,
"size"=> 30000,
'query' => [
'filtered'=> [
'query' => [
'match'=> [
'title' => [
'query' => "vivre et comprendre le cancer",
'operator' => "and"
]
]
],
'filter' => [
'bool' => [
'must' => [
'terms' => [
'field_support' => [105,106,1896,1897]
]
]
]
]
]
]
]
];
关于php - 带有匹配和过滤的Elasticsearch查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41849980/