perl – 弹性搜索:使用过滤器并应该bool查询
发布时间:2020-12-15 21:51:16 所属栏目:大数据 来源:网络整理
导读:我想使用弹性搜索来搜索大型地址数据库,并使其像其他一些应用程序一样,我首先使用邮政编码,这对于缩小搜索查询的其余部分非常有用. 所以用Search::Elasticsearch 我做 my $scroll = $e-scroll_helper(index = 'pdb',search_type = 'scan',size = 100,body =
我想使用弹性搜索来搜索大型地址数据库,并使其像其他一些应用程序一样,我首先使用邮政编码,这对于缩小搜索查询的其余部分非常有用.
所以用Search::Elasticsearch 我做 my $scroll = $e->scroll_helper(index => 'pdb',search_type => 'scan',size => 100,body => { query => { bool => { filter => [ {match => { pcode => $postcode }},],should => [ {match => { address => $keyword }},{match => { name => $keyword }},} } } ); 然而,这只是为$post邮件吐出所有内容,无论$keyword是什么,结果集都不会进一步减少. 我需要将$postcode作为强制条件,但也要另外将其他两个字段作为全文搜索考虑在内. 对于一个假设的例子: 解决方法
根据常识,我发现以下内容符合我对bool段的要求:
bool => { must => [ {match => { pcode => $postcode }},should => [ {match => { address => $keyword }},minimum_should_match => 1,} 将minimum_should_match设为1(这是一个计数器而不是真/假),感觉就像是在那些应该插入一个OR (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |