假设我有两个文本字段的索引:
"properties" : {
"name" : {
"type" : "text"
},
"description" : {
"type" : "text"
}
}
我需要优先通过这两个字段来实现全文搜索。首先是名字,然后是描述。关键是,如果我已经按名称找到了某些内容,则无需在描述中进行搜索。我可以实现两个查询,并检查按名称搜索是否返回0结果,而不是按描述搜索。但是有没有办法通过单个查询实现它?
UPD。我的查询非常简单:
"query": {
"bool": {
"should": [
{
"match": {
"name": {
"query": "some user input here",
"operator": "and"
}
}
},
{
"match": {
"description": {
"query": "some user input here",
"operator": "and"
}
}
}
]
}
}
改进的问题是,如何将单个查询的结果分为两组:按名称匹配的人和按描述匹配的人?第一组应得分高于第二组。我需要知道两个组的总数才能在应用程序中实现分页行为。因此,当第一组为空时,我将显示第二组,但不仅限于此。否则,我将向用户隐藏第二个组。此外,在组内应该有(由提供的分析器提供的)相关性评分,以便为用户提供合理的搜索结果。