两个完全分开的搜索的合并结果

时间:2018-08-08 19:50:18

标签: elasticsearch

我的客户希望能够执行搜索,查看结果,然后执行另一个完全不相关的搜索,并将新结果附加到以前的结果中。

我正在尝试找到一种在ElasticSearch中执行此操作的方法,以便仍可以使用内置分页。

这里的复杂之处在于每个搜索可能具有多个查询部分,这些部分将独立于其他搜索进行组合。因此,例如,我可能会进行一次搜索,以查找关键字为“ 123 Anywhere St.”的所有ACTIVE属性。价格范围为100000到150000。搜索将如下所示:

{
  "from": 0,
  "size": 25,
  "query": {
    "bool": {
      "filter": {
        "terms": {
          "statusId": [
            1,
            2
          ]
        }
      },
      "must": [
        {
          "multi_match": {
            "query": "123 Anywhere St.",
            "fuzziness": 0,
            "prefix_length": 0,
            "fields": [
              "searchable_name^10",
              "searchable_mapAddress",
              "searchable_streetName2"
            ]
          }
        },
        {
          "range": {
            "price": {
              "gte": 100000
            }
          }
        },
        {
          "range": {
            "price": {
              "lte": 150000
            }
          }
        }
      ]
    }
  }
}

然后,我可能会使用关键字“ 234 Elsewhere St.”进行另一种完全不同的搜索。然后搜索尺寸范围而不是价格,然后查找其他状态。

我希望在一个单独的分页结果集中显示第一个搜索的所有结果,然后显示第二个搜索的所有结果。

这可以在ElasticSearch中完成吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Multi Search API进行操作。您需要做的就是向 _msearch 端点提供搜索请求。

GET index_name/_msearch
{}
{"query" : {"match_all" : {}}, "from" : 0, "size" : 10}
{}
{"query" : {"match_all" : {}}}

希望有帮助!