2016-05-04 2 views
0

Можем ли мы запросить 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": {} 
} 
+0

, пожалуйста, добавьте код, что вы пробовали ??? –

+2

Возможно. Используйте '' size ": 1' и, ** по умолчанию **, он даст вам только один документ, который должен иметь самый высокий балл. Документы сортируются по умолчанию по счету, поэтому, если вы не изменили механизм сортировки, '' size ": 1' достаточно. –

+0

размер: 1 .. вернет только документ в любом случае.Bt мой usecase отличается. –

ответ

2

Вы можете проверить top-hits aggregation. Может быть, это поможет вам в вашем случае использования :)

+0

да ... топ-хиты агрегирование работает для меня (y) .. спасибо .. –

Смежные вопросы