2014-10-06 18 views
9

Top_hit doc.score tarafından kova sipariş vermek istiyorum. Mevcut uygulamamın altında.En iyi hit puanı ile Elasticsearch aggregation order

group_by_iid: { 
    terms: { 
     field: 'iid', 
     order: { max_score: 'desc' }, 
     size: 0 
    }, 
    aggs: { 
     max_score: { max: { script: 'doc.score' } }, 
     top_hit: { 
     top_hits: { 
      sort: [{ source_priority: { order: 'desc' } }], 
      size: 1 
     } 
     } 
    } 
    } 

Bu sorun, paketler üst kaynaklarına göre değil, üstteki kaynaklarına göre sıralanır. Bu sorunu çözmenin bir yolu var mı?

cevap

10

Aynı sorunu yaşadım ve çözdüğüm biçim dokümanlar puanında bir alt kümelenme tanıtmaktı. Sonra benim dış toplamada, max_score topluluğunun ismine göre sipariş verdim. belgeleriniz bir "puan" alan sahip olursanız

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html

+11

ve "max" gibi bir ölçümlerini toplama bilgisayarlı skorla çalışmak istiyoruz:

GET /my-index/my-type/_search { "query": { "bool" : { "should" : [ { "match" : { "searchTerm" : { "query" : "style", "type" : "boolean" } } }, { "flt_field" : { "searchTerm" : { "like_text" : "style" } } }] } }, "aggs": { "group_by_target_url": { "terms": { "field": "targetUrl", "order": { "max_score": "desc" } }, "aggs": { "max_score": { "max": { "script": "doc.score" } } } } } } 

ben bu bağlantıyı izlemek yön Belge tanımlı olan yerine elasticsearch ile, toplamadaki betik "docscore" değil "_score" olmalıdır. – Shadocko

+0

@Shadocko evet! Bu oldukça yanıltıcı. Yorum için teşekkürler. Aynı örneği deniyorum ve şimdi çalışıyor. – Darby

+0

Bölmeleri ile nasıl çözeceğinizi biliyor musunuz? Sorum şu an https://stackoverflow.com/questions/46484351/elasticsearch-aggregation-order-by-top-hit-score-with-partitions – KingWu

İlgili konular