三人行必有我师

如何在搜索的时候,针对字段的模糊匹配时又对内容正则或wildcard匹配

Elasticsearch | 作者 yason | 发布于2023年11月09日 | 阅读数:2575

搜索一个关键字(王),其中包含小明的词的字段有first_name、full_name、username、akas_firstname、akas_lastname等
搜索要求一、只是字段(包含name)模糊匹配 那么组装的sql就如下:
{
"multi_match": {
"fields": [
"*name"
],
"query": "王"
}
}
搜索要求二、明确知道字段但是对于关键字进行(正则或wildcard)模糊匹配 那么组装的sql如下:
"wildcard": {
"name": "*王*"
}
}
需求,需要同时进行字段(包含name)模糊匹配【and】关键字(正则或wildcard)模糊匹配,那么怎么进行组装查询
尝试过直接使用(wildcard)进行同时满足 组装sql如下:
  1.  

{
"wildcard": {
"*name": "*王*"
}
}
然此sql无法获取到正确结果数据,但是查询语句是通过的

所以想请问如何进行正确的组建查询sql把以上两种情况包含,类似于1的语句,满足查询
已邀请:

mryu

赞同来自: liaosy

bool包一下should满足其一
{
  "query": {
    "bool": {
      "should": [
        {
          "multi_match": {
            "query": "",
            "fields": []
          }
        },
        {
          "wildcard": {
            "FIELD": {
              "value": "VALUE"
            }
          }
        }
      ]
    }
  }
}

要回复问题请先登录注册