Elasticsearch:如何在过滤器查询中使用通配符

Elasticsearch: How to use wildcards in percolator query

我正在创建一些如下所示的过滤器查询:

{
    "search_term": "*a1c*",
    "highlight": {
        "fields": [
            "assessment",
            "complaint",
            "exam",
            "history"
         ],
        "post_tags": [
            "~~"
        ],
        "pre_tags": [
            "~~"
        ]
    },
    "query": {
        "multi_match": {
            "fields": [
                "assessment",
                "complaint",
                "exam",
                "history",
            ],
            "query": "*a1c*",
            "type": "phrase"
        }
    }
}

我想要的是搜索像

这样的文档
"patient's hemoglobin a1c is ..."

和return结果

"patient's hemoglobin ~~a1c~~ is..."

目前正在处理上面的查询。但是,我希望它也能够在 'a1c' 是子字符串时找到它,例如

"patient's hba1c is..."

 "patientsa1cmeasurementis..."

然而,elasticsearch 只匹配 'a1c' 作为一个独立的字符串,并且不会识别子字符串,尽管在搜索词中有通配符。我在这里做错了什么?如果有帮助,我不关心执行时间(我知道通配符很慢)并且保持突出显示会很好,但如果两者相互排斥那么我可以摆脱它。

尝试将 multi_search 更改为

"query":{
  "query_string":{
     "query":"*a1c*",
     "fields":[
        "assessment",
        "complaint",
        "exam"
     ]
  }}

使用此查询“patient's hba1c is...”将是“patient's ~~hba1c~~ is...” 和 “patientsa1cmeasurementis...”将是 "~patientsa1cmeasurementis...~~"