elasticsearch - ElasticSearch 6.8.13 多匹配查询不适用于空词
问题描述
在下表下方,我使用带有type:most_fields的multi_match查询。如果我搜索血管造影,我希望 Elasticsearch 返回我
scanType="",scanSubType="血管造影", body=""
但 Elasticsearch 返回
scanType="",scanSubType="血管造影", body="大脑"
请帮助我解决这个问题。
表数据
扫描类型 | 扫描子类型 | 身体 |
---|---|---|
血管造影 | ||
CT扫描 | 冠状动脉造影 | |
血管造影 | 脑 | |
CT扫描 | 血管造影 | |
CT扫描 | 血管造影 | 下肢 |
核磁共振成像扫描 | 血管造影 | 脑 |
Elasticsearch 搜索查询
GET /radiology/_search
{
"query": {
"multi_match" : {
"query": "angio",
"type": "most_fields",
"fields": ["scanSubType","scanType","body"]
}
}
}
弹性搜索索引
PUT /radiology
{
"mappings": {
"radiaology_bean" : {
"properties" : {
"scanType": { "type": "text",
"search_analyzer": "pre_process",
"analyzer": "standard"
},
"scanSubType": { "type": "text",
"search_analyzer": "pre_process",
"analyzer": "standard"
},
"body": { "type": "text",
"search_analyzer": "pre_process",
"analyzer": "standard"
}
}
}
},
"settings": {
"index": {
"analysis": {
"filter": {
"synonym": {
"type": "synonym",
"expand": false,
"synonyms": [
"angio => angiogram"
]
}
},
"analyzer": {
"pre_process": {
"tokenizer": "standard",
"filter": ["lowercase","word_delimiter","synonym"]
}
}
}
}
}
}
解决方案
推荐阅读
- java - 如何在 Eclipse 中调试 sun.net 内部类?
- java - Junit5 错误。您必须为此 @ParameterizedTest 提供至少一个参数
- javascript - iOS 上的缩放控件不再可见
- django - 如何在 Django 中管理快速增长的 postgres 表?
- encryption - Travis 使用 openssl 解密加密文件失败
- javascript - 如何设置来自 API 的 JSON 数据计数以允许列表中的那么多?
- node.js - 防止 express 中间件为相同的父路径执行
- c# - 如何从本地文件播放音乐
- android - TextView 中的偏移文本
- dialogflow-es - 如何在手机表面的谷歌操作中显示列表卡时删除简单响应