当有多个匹配查询的记录时,我们是否可以查询ES以仅返回响应中得分最高的一个结果?
如果有任何示例查询,请告诉我。感谢。
示例响应/文档: - 我喜欢搜索。 截至目前,我的服务返回到记录以下。
record1 - product1, value1, score=1.5
record2 - product1, value2, score=1.4
record3 - product2, value1, score=1.7
record4 - product2, value2, score=0.8
record5 - product3, value1, score=1.2
我希望结果仅包含以下记录,这些记录将根据分数过滤产品。每个产品只有一条记录。
record1 - product1, value1, score=1.5
record3 - product2, value1, score=1.7
record5 - product3, value1, score=1.2
进一步详情: - 创建了一个自定义分析器: -
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": "1",
"max_gram": "20"
}
},
"analyzer": {
"autocomplete": {
"filter": [
"autocomplete_filter"
],
"type": "custom",
"tokenizer": "keyword"
}
}
}
映射: -
"PRODUCT_ID": {
"analyzer": "autocomplete",
"type": "string"
}
查询: -
{
"query": {
"bool": {
"must": [
{
"term": {
"PRODUCT_ID": "CON-HSH-AS"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [],
"aggs": {}
}