elasticsearch 中的邻近度相关性
Proximity-Relevance in elasticsearch
我在带字段的弹性搜索中有一条 json 记录
"streetName": "5 Street",
"name": ["Shivam Apartments"]
我尝试了以下查询,但如果我在查询中添加 streetName bool
,它不会 return 任何东西
{
"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 street”将不会匹配“5 Street”('s' vs 'S')
- minimum_should_match 对关键字字段无效。
建议:对于部分匹配,使用“文本”映射而不是“关键字”。关键字用于过滤、基于术语的聚合等。
我在带字段的弹性搜索中有一条 json 记录
"streetName": "5 Street",
"name": ["Shivam Apartments"]
我尝试了以下查询,但如果我在查询中添加 streetName bool
,它不会 return 任何东西{
"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 street”将不会匹配“5 Street”('s' vs 'S')
- minimum_should_match 对关键字字段无效。
建议:对于部分匹配,使用“文本”映射而不是“关键字”。关键字用于过滤、基于术语的聚合等。