首先,我是弹性搜索新手。我有字段skillName:"Android Sdk"
。我在弹性搜索中将此字段映射为keyword
。但问题是,当我搜索类似
POST _search
{
"query": {
"match" : { "skillName" : "Android sdk" }
}
}
sdk
在搜索查询中很小。它没有给我任何结果。当字段被映射为关键字
答案 0 :(得分:1)
要在关键字字段中搜索不区分大小写,您需要使用5.2.0中引入的normalizer
。有关示例,请参阅here。
答案 1 :(得分:1)
是的,它忽略了与原版不同的情况,因为您使用了keyword分析器,它没有对令牌做任何事情,而是保留原样。在您的情况下,只有在您查询完全相同标记
时才会进行匹配因此,我建议更改此行为并至少应用lowercase令牌过滤器,这样您就可以将术语与不同的注册表匹配。
答案 2 :(得分:1)
您可以将不同的分析仪应用于相同的“字段”,并使用一个用于全文搜索,另一个用于排序,聚合。
答案 3 :(得分:0)
尝试以下方法:
{
"query": {
"query_string": {
"fields": [
"skillName"
],
"query": "Android sdk"
}
}
}