首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从elasticsearch-php中的搜索中排除ID的结果

从elasticsearch-php中的搜索中排除ID的结果
EN

Stack Overflow用户
提问于 2016-02-18 07:10:43
回答 3查看 1.1K关注 0票数 1

,我试着做这样的事情:

代码语言:javascript
复制
$params['body']['query']['bool']['must_not']['id']['value']=$pid;

但不起作用。请为正确的语法提供一些帮助。

完整代码:

代码语言:javascript
复制
$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);

更新的全代码

代码语言:javascript
复制
$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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-18 09:17:57

根据这个链接https://www.elastic.co/guide/en/elasticsearch/guide/current/combining-filters.html,组合多个过滤器都需要在bool过滤器之下。

所以在我把所有的都改成:

代码语言:javascript
复制
 $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];
票数 0
EN

Stack Overflow用户

发布于 2016-02-18 07:26:34

正确的查询是ids而不是id

代码语言:javascript
复制
$params['body']['query']['bool']['must_not']['ids']['values'] = [$pid];
                                                ^         ^     ^    ^
                                                |         |     |    |
                                             fix this and this and this

除了您的查询格式不正确之外,它还应该是

代码语言:javascript
复制
$params['body']['query']['filtered']['filter']['not'][]['ids']['values'] = [$pid];
票数 2
EN

Stack Overflow用户

发布于 2016-02-18 07:19:04

尝尝这个

代码语言:javascript
复制
$pid = 25;
$params = array();
$params['body']['query']['bool']['must_not']['id']['value']=$pid;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35475009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档