ElasticSearch:即使一个字段不匹配,也显示多搜索的部分匹配

时间:2015-11-24 18:27:56

标签: search elasticsearch get match partial

我目前正在尝试对名字,姓氏和出生日期进行多重搜索查询。我希望结果显示第一个,最后一个和dob的完全匹配,但如果第一个名字和姓氏匹配但存在不同的出生日期,那么也会显示结果。

截至目前,如果所有三个字段都具有完全匹配

,则我的代码仅返回结果
GET /account/data/_search
{
  "query": {
    "match": {
      "first": {
        "query": "Chris"
      }
    }
  },
  "query": {
    "match": {
      "last": {
        "query": "Johnson"
      }
    }
  },
  "query": {
    "match": {
      "dob": {
        "query": "10-10-1990"
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

这可以通过简单的bool query

来解决
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "first": "TEXT"
          }
        },
        {
          "match": {
            "last": "TEXT"
          }
        }
      ],
      "should": [
        {
          "match": {
            "dob": "TEXT"
          }
        }
      ]
    }
  }
}