我的客户希望能够执行搜索,查看结果,然后执行另一个完全不相关的搜索,并将新结果附加到以前的结果中。
我正在尝试找到一种在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中完成吗?
答案 0 :(得分:0)
您可以使用Multi Search API进行操作。您需要做的就是向 _msearch 端点提供搜索请求。
GET index_name/_msearch
{}
{"query" : {"match_all" : {}}, "from" : 0, "size" : 10}
{}
{"query" : {"match_all" : {}}}
希望有帮助!