我做一个blog的查询,有两个字段标题和作者
subject:text类型,标题
opname:keyword类型,作者
现在搜索框中输入:张三 ElasticSearch
需要能够匹配到:标题中包含ElasticSearch 或者 作者为张三
我用了multi_match做查询
"multi_match" : {
"query" : "张三 ElasticSearch",
"fields" : [ "subject", "opname" ]
}
但是只能匹配到标题包含ElasticSearch的内容, 无法匹配到作者是张三,标题中不包含ElasticSearch的内容
我猜测是因为opname类型是keyword,导致无法匹配"张三 ElasticSearch"
请问有什么解决的办法呢?
subject:text类型,标题
opname:keyword类型,作者
现在搜索框中输入:张三 ElasticSearch
需要能够匹配到:标题中包含ElasticSearch 或者 作者为张三
我用了multi_match做查询
"multi_match" : {
"query" : "张三 ElasticSearch",
"fields" : [ "subject", "opname" ]
}
但是只能匹配到标题包含ElasticSearch的内容, 无法匹配到作者是张三,标题中不包含ElasticSearch的内容
我猜测是因为opname类型是keyword,导致无法匹配"张三 ElasticSearch"
请问有什么解决的办法呢?
3 个回复
Charele - Cisco4321
赞同来自:
jlk11640
赞同来自:
"query": {
"bool": {
"should": [{
"match": {
"subject": "张三 ElasticSearch"
}
}, {
"terms": {
"opusername": ["张三", "ElasticSearch"]
}
}]
}
}
tongchuan1992 - 学无止境、学以致用
赞同来自: