elasticsearch,Php,Laravel,elasticsearch" /> elasticsearch,Php,Laravel,elasticsearch" />

如何使用';或';在elasticsearch PHP中

如何使用';或';在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

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

$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';

有什么想法吗?

术语过滤器通常不适用于分析的字段。字段应设置为“未分析”,以使
术语
过滤器有效。您可以使用
匹配
或其他筛选器。或者,您可以指定一个
多字段
映射,以便在同一映射中存储
已分析的
未分析的
版本