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...~~"
我正在创建一些如下所示的过滤器查询:
{
"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...~~"