首页 > 解决方案 > 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"]
          }
        }
      }
    }
  }
}

标签: elasticsearchsearchlucene

解决方案


推荐阅读