【发布时间】:2020-07-28 07:19:58
【问题描述】:
例如,我在弹性搜索中有以下文档:
{ make: 'honda',
model: 'civic 5-door'
year: '2011'
}
{ make: 'honda',
model: 'CIVIC TOURER 5-DOOR '
year: '2011'
}
{ make: 'honda',
model: 'JAZZ 5-DOOR'
year: '2012'
}
{ make: 'mazda',
model: 'some multi word name'
year: '2012'
}
我想制作一个可以搜索所有三个字段的搜索栏。我尝试了以下查询:
$query = 'some query string'
$results = $search->search([
'index' => 'cars',
'body' => [
"query" =>[
'multi_match' => [
"query" => $query,
"type" => "cross_fields",
"analyzer"=> "standard",
"fields" => ['model', 'make', 'year'] ]
]
]
]);
当我使用像“honda 2011”这样的搜索查询时,查询会返回结果(它与“make”和“year”中的查询词匹配),但如果我只输入“civic”(参见多词字段'model'),它不显示任何结果。为什么搜索到多工作领域不起作用?我错过了什么吗?请帮忙。
我的索引映射如下所示:
$params = ['index' => 'cars'];
$params['body'] = [
'mappings' => [
'properties' => [
'body_type' => [
'type' => 'keyword'
],
'fuel_type' => [
'type' => 'keyword'
],
'engine_size' => [
'type' => 'short'
],
'make' => [
'type' => 'keyword'
],
'model' => [
'type' => 'keyword'
],
'dealership' => [
'type' => 'keyword'
],
'transmission' => [
'type' => 'keyword'
],
'colour' => [
'type' => 'keyword',
],
'location' => [
'type' => 'geo_point'
]
]
]
];
【问题讨论】:
-
能否也显示您的索引映射?
-
@Val 我已经编辑了帖子。
标签: elasticsearch