如何使用';或';在elasticsearch PHP中
我有一个带有街道地址、城市、省份和邮政编码的地方索引。现在我尝试使用弹性搜索来使用'OR'关键字,就像在MySQL中一样。以下是我当前的代码:如何使用';或';在elasticsearch PHP中,php,laravel,elasticsearch,Php,Laravel,elasticsearch,我有一个带有街道地址、城市、省份和邮政编码的地方索引。现在我尝试使用弹性搜索来使用'OR'关键字,就像在MySQL中一样。以下是我当前的代码: $query = 'Kassandraburgh'; $searchParams['index'] = 'listings'; $searchParams['type'] = 'property'; $searchParams['body']['query']['filtered']['query']['term']['Address.City
$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);
我的代码基于上的文档,但这似乎不起作用。因为当我这样做时,总是返回0个结果。你知道我错过了什么吗?对所有场进行了分析
更新
好的,我取得了一些进展。我现在可以使用街道地址、城市、邮政编码和州/省进行查询。但是现在过滤器不再工作了。事实上,当我尝试加入一些过滤器时,弹性搜索根本不会返回任何结果。以下是我当前的代码:
$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);
$search_参数['body']['query']['filtered']['query']['query_string']['query']='losangeles'
$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';
有什么想法吗?术语过滤器通常不适用于分析的字段。字段应设置为“未分析”,以使
术语
过滤器有效。您可以使用匹配
或其他筛选器。或者,您可以指定一个多字段
映射,以便在同一映射中存储已分析的
和未分析的
版本