假设我有一个名为complexId
的字段,它的值包含特殊字符:fruit/1a.445/2.10.mango
。因此,当我搜索Complex ID fruit/1a.445/2.10.mango
之类的内容时,我应该能够得到结果。
我想要的是,我希望弹性搜索能够匹配这3个单词中的至少一个:
1. Complex
2. ID
3. fruit/1a.445/2.10.mango
例如: - 以下是我的两份文件:
{
"name": "Joe",
"complexId": "fruit/1a.445/2.10.mango"
},
{
"name": "Matt",
"complexId": "car/35.6a5/chevy.20"
}
用户搜索blah blah blah fruit/1a445/mango blah blah
之类的内容,他应该得到以下结果:
{
"name": "Matt",
"complexId": "fruit/1a.445/2.10.mango"
}
我试过了,但它没有给我任何结果:
{
"query": {
"bool": {
"match" :
{
complexId : "blah blah blah fruit/1a.445/2.10.mango blah blah"
}
}
}
}
字段complexId
有一个标准分析器。
任何帮助都将不胜感激。
答案 0 :(得分:1)
标准分析器在您的情况下不起作用。
由于您有特殊字符,因此在存储到ElasticSearch时会被忽略。请尝试使用whitespace
分析器。
POST _analyze
{
"analyzer": "whitespace",
"text": "blah blah blah fruit/1a.445/2.10.mango blah blah"
}
使用不同的分析仪,找到最适合您需求的分析仪。
您也可以创建自己的自定义分析器。