结合2个弹性搜索查询

时间:2016-02-25 14:08:27

标签: database elasticsearch lucene

我有2 function_score次查询。

第一个,我在attractions类型

上运行
{
  "query": {
    "function_score": {
      "query": {
        "nested": {
          "path": "translations",
          "query": {
            "multi_match": {
              "query": "Text to search",
              "type": "best_fields",
              "fields": [
                "title^3",
                "description"
              ]
            }
          }
        }
      },
      "functions": [
        {
          "filter": {
            "term": {
              "cityId": 3
            }
          },
          "weight": 100
        }
      ],
      "score_mode": "multiply"
    }
  }
}

和第二个,我在pizzeria类型

上运行
{
  "query": {
    "function_score": {
      "query": {
        "multi_match": {
          "query": "Text to search",
          "type": "best_fields",
          "fields": [
            "name^3",
            "description"
          ]
        }
      },
      "functions": [
        {
          "filter": {
            "term": {
              "cityId": 1
            }
          },
          "weight": 100
        }
      ],
      "score_mode": "multiply"
    }
  }
}

它们都运作良好。我知道想用一个查询搜索这两种类型,但我不知道如何“合并”这两个查询。

我想这样做是因为我希望将2类型的元素按相同的分数排序。

这可能吗?我怎样才能做到这一点 ?

1 个答案:

答案 0 :(得分:0)

您可以使用Multi Search API将查询合并到一个查询中:

Multi Search API