问题描述
"streetName": "5 Street","name": ["Shivam Apartments"]
我尝试了以下查询,但是如果我在查询中添加streetName bool,它不会返回任何内容
{
"query": {
"bool": {
"must": [
{
"bool": {
"must": {
"match": {
"name": {
"query": "shivam apartments","minimum_should_match": "80%"
}
}
}
}
},{
"bool": {
"must": {
"match": {
"streetName": {
"query": "5 street","minimum_should_match": "80%"
}
}
}
}
}
]
}
}
}
文档映射
{
"rabc_documents": {
"mappings": {
"properties": {
"name": {
"type": "text","analyzer": "autocomplete_analyzer","position_increment_gap": 0
},"streetName": {
"type": "keyword"
}
}
}
}
}
解决方法
基于E.S文档(Keywords in Elastic Search)
- “关键字字段只能按其确切值进行搜索”。
- 该关键字也区分大小写。
考虑到上述情况:
- 在关键字字段上搜索“ 5条街”与“ 5条街”(“ s”与“ s”)不匹配
- minimum_should_match 不适用于关键字字段。
建议:对于部分匹配,请使用“文本”映射而不是“关键字”。关键字旨在用于过滤,基于术语的聚合等。