[英]Elasticsearch for laravel - Get documents matching one or more categories?
以下代码适用于我并返回与查询匹配的博客文章
$params = [
'index' => 'blog',
'type' => 'post',
'body' => [
'query' => [
'multi_match' => [
'query' => $request->get('query'),
'fields' => ['title', 'description']
]
]
]
];
$response = \Elasticsearch::search($params); // works perfect
如何更改上面的代码,以便我可以获取其类别与$ categories值之一匹配的所有文档
$ categories变量是我从复选框中获取的变量,
我尝试使用下面的代码但由于某种原因它返回空结果:
// $categories = $request->get('categories');
$categories = ["News", "Technology"];
$params = [
'index' => 'blog',
'type' => 'post',
'body' => [
"query"=> [
"filtered"=> [
"query"=> [
"match_all"=> []
],
"query"=>[
"terms"=> [
"category"=> $categories
]
]
]
]
]
];
$response = \Elasticsearch::search($params); // return 0 hits
有关如何根据一个或多个类别获取文档而不是基于匹配单词获取文档的任何想法?
您在不允许的filtered
子句中有两个相同级别的query
子句。
"query"=> [
"filtered"=> [
"query"=> [ <-- (1)
"match_all"=> []
],
"query"=>[ <-- (2)
"terms"=> [
"category"=> $categories
]
]
]
如果您只尝试查询类别,则应删除第一个子句。 您可以将查询写为
"query"=> [
"filtered"=> [
"query"=>[
"terms"=> [
"category"=> $categories
]
]
]
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.