繁体   English   中英

如何在Elasticsearch PHP中使用'OR'

[英]How to use 'OR' in elasticsearch PHP

我有一个带有街道地址,城市,省和邮政编码的地方索引。 现在,我试图像在MySQL中那样使用弹性搜索来使用'OR'关键字。 这是我当前的代码:

$query = 'Kassandraburgh';

$searchParams['index'] = 'listings';
$searchParams['type']  = 'property';



$searchParams['body']['query']['filtered']['query']['term']['Address.City'] = $query;
$searchParams['body']['query']['filtered']['filter']['or'][]['term']['Address.StateOrProvince'] = $query;
$searchParams['body']['query']['filtered']['filter']['or'][]['term']['Address.FullStreetAddress'] = $query
$searchParams['body']['query']['filtered']['filter']['or'][]['term']['Address.PostalCode'] = $query;

$queryResponse = Es::search($searchParams); 

print_r($queryResponse);

我的代码基于OR过滤器上的文档,但这似乎不起作用。 因为当我这样做时总是返回0结果。 有什么想法我在这里想念的吗? 分析了所有领域。

更新资料

好的,我取得了一些进展。 现在,我可以使用街道地址,城市,邮政编码和州/省进行查询。 但是现在过滤器不再起作用。 实际上,当我尝试放入一些过滤器时,弹性搜索根本不会返回任何结果。 这是我当前的代码:

$ search_params ['body'] ['query'] ['filtered'] ['query'] ['query_string'] ['query'] ='洛杉矶';

$search_params['body']['query']['query_string']['fields'] = array(
            'Address.PostalCode', 
            'Address.FullStreetAddress',
            'Address.StateOrProvince',
            'Address.City',
); 


$search_params['body']['query']['filtered']['filter']['term']['Category'] = 'Awesome';

有任何想法吗?

术语过滤器通常不适用于已分析的字段。 为了使term过滤器生效,应将字段设置为“ not_analyzed”。 您可以改用match或其他过滤器。 或者,您可以指定一个multi_field映射,以便可以在同一映射中存储已analyzednot_analyzed analyzed版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM