,我试着做这样的事情:
$params['body']['query']['bool']['must_not']['id']['value']=$pid;但不起作用。请为正确的语法提供一些帮助。
完整代码:
$pid = $_GET['pid'];
$params = array();
$params['index'] = 'xyz';
$params['type'] = 'product';
$params['body']['query']['filtered']['filter']['and'][]['term']['userid'] = $uid;
$params['body']['query']['filtered']['filter']['and'][]['term']['categoryid3'] = $pc;
$params['body']['query']['bool']['must_not']['id']['value']=$pid;
$params['size'] ='5';
$result = $client->search($params);更新的全代码
$pid = $_GET['pid'];
$params = array();
$params['index'] = 'xyz';
$params['type'] = 'product';
$params['body']['query']['filtered']['filter']['and'][]['term']['userid'] = $uid;
$params['body']['query']['filtered']['filter']['and'][]['term']['categoryid3'] = $pc;
$params['body']['query']['filtered']['filter']['not'][]['ids']['values'] = [$pid];
$params['size'] ='5';
$result = $client->search($params);而不是用pid排除这个结果,现在它只显示这个结果。
注意:在“答案”一节中找到了myself..Added
发布于 2016-02-18 09:17:57
根据这个链接https://www.elastic.co/guide/en/elasticsearch/guide/current/combining-filters.html,组合多个过滤器都需要在bool过滤器之下。
所以在我把所有的都改成:
$params['body']['query']['bool']['must'][]['term']['userid'] = $uid;
$params['body']['query']['bool']['must'][]['term']['categoryid2'] = $pc;
$params['body']['query']['bool']['must_not'][]['ids']['values'] = [$pid];发布于 2016-02-18 07:26:34
正确的查询是ids而不是id
$params['body']['query']['bool']['must_not']['ids']['values'] = [$pid];
^ ^ ^ ^
| | | |
fix this and this and this除了您的查询格式不正确之外,它还应该是
$params['body']['query']['filtered']['filter']['not'][]['ids']['values'] = [$pid];发布于 2016-02-18 07:19:04
尝尝这个
$pid = 25;
$params = array();
$params['body']['query']['bool']['must_not']['id']['value']=$pid;https://stackoverflow.com/questions/35475009
复制相似问题