我使用php对二进制文档(fscrawler)实现了elasticsearch。在默认设置下,它可以正常工作。我可以在文档中搜索所需的单词,并且得到的结果不区分大小写。但是,我现在想进行精确匹配,即在当前搜索的基础上,如果查询用引号引起来,我想获得仅与查询完全匹配的结果。甚至区分大小写。
我的映射如下:
"settings": {
"number_of_shards": 1,"index.mapping.total_fields.limit": 2000,"analysis": {
"analyzer": {
"fscrawler_path": {
"tokenizer": "fscrawler_path"
}
},"tokenizer": {
"fscrawler_path": {
"type": "path_hierarchy"
}
}
}
.
.
.
"content": {
"type": "text","index": true
},
我对文档的查询如下:
if ($q2 == '') {
$params = [
'index' => 'trial2','body' => [
'query' => [
'match_phrase' => [
'content' => $q
]
]
]
];
$query = $client->search($params);
$data['q'] = $q;
}
完全匹配(无效):
if ($q2 == '') {
$params = [
'index' => 'trial2','body' => [
'query' => [
'filter' =>[
'term' => [
'content' => $q
]
]
]
]
];
$query = $client->search($params);
$data['q'] = $q;
}
content字段是文档的正文。如何在内容字段中实现特定单词或短语的完全匹配?