弹性:搜索两个术语,一个在_上,另一个在一个字段上



我想在整个文档(例如"开发人员")上混合搜索,并在某个字段上搜索另一个术语(例如" php")。我可以分别进行每个搜索,但不能混合它们。

在这里我的示例(简化以显示我的问题):

{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "_all": "developer"
        },
        "multi_match": {
          "query": "php",
          "fields": [
            "skills.description",
            "skills.description",
            "skills.details"
          ],
          "operator": "or",
          "type": "most_fields"
        }
      }
   }
}

如果我运行此示例,我有一个错误:

Parse Failure [Failed to parse source

是否有一种方法可以在_all和特定字段上使用两个术语进行搜索?

谢谢。

是的,您快到了,您需要将它们组合到bool/must查询中:

{
  "query": {
    "function_score": {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "_all": "developer"
              }
            },
            {
              "multi_match": {
                "query": "php",
                "fields": [
                  "skills.description",
                  "skills.description",
                  "skills.details"
                ],
                "operator": "or",
                "type": "most_fields"
              }
            }
          ]
        }
      }
    }
  }
}

最新更新