Можем ли мы запросить 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"
}
}
}
Mapping: -
"PRODUCT_ID": {
"analyzer": "autocomplete",
"type": "string"
}
Запрос: -
{
"query": {
"bool": {
"must": [
{
"term": {
"PRODUCT_ID": "CON-HSH-AS"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [],
"aggs": {}
}
, пожалуйста, добавьте код, что вы пробовали ??? –
Возможно. Используйте '' size ": 1' и, ** по умолчанию **, он даст вам только один документ, который должен иметь самый высокий балл. Документы сортируются по умолчанию по счету, поэтому, если вы не изменили механизм сортировки, '' size ": 1' достаточно. –
размер: 1 .. вернет только документ в любом случае.Bt мой usecase отличается. –