如何在ElasticSearch中组合多个查询

时间:2016-03-10 05:36:35

标签: elasticsearch coffeescript elasticsearch-plugin

我正在尝试检索与两个查询匹配的记录。

第一个是match_phrase

"match_phrase": {
                    "searchstring": {
                    "query": "' . $searchQ . '",
                    "slop":  10
                    }
                }

第二个我正在使用多重匹配

"multi_match": {
                    "query":    "' . $searchQ . '",
                    "fields" : ["_all"],
                    "type":       "cross_fields",
                }

我该怎么做才能正确。请帮忙

1 个答案:

答案 0 :(得分:2)

您可以使用bool/must(或bool/should)查询来合并您的两个查询:

{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "searchstring": {
              "query": "xyz",
              "slop": 10
            }
          }
        },
        {
          "multi_match": {
            "query": "xyz",
            "fields": [
              "_all"
            ],
            "type": "cross_fields"
          }
        }
      ]
    }
  }
}