我想使用弹性搜索来搜索一个大型的地址数据库,并使它像一些其他应用程序,我首先从邮政编码开始,这是很好的缩小了其余的搜索查询。弹性搜索:使用过滤器,应该布尔查询
我做
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 }},
],
}
}
}
);
然而,仅仅吐出家居$postcode
也不管什么$keyword
是结果集不会进一步减少。
我需要有$postcode
作为强制条件,但也单独另外还有其他两个字段也作为全文搜索考虑在内。 我应该怎么做这个(IM看文档和可能被解释json-> perl的hashrefs错了,所以任何建议表示欢迎)
对于一个假设的例子: 用户输入NW1 4AQ
,上面的查询将立即返回,说,奥尔巴尼街和波特兰街,如果用户查询Portland
和这个邮政编码,而不是得到这两个结果,我预计只有波特兰街才是结果。现在与上面它只是不断返回两个条目。
是否有可能建立一个[最小的,完整的,和可核查的示例](HTTP:// ...计算器.com/help/mcve)? –
增加了一个罗嗦的假设例子。 – Recct