2015-12-10 2 views
0

У меня есть индекс, как:Получения полных документов с использованием ElasticSearch агрегирования

[ 
    { 
     "Name": "Alex", 
     "LastName": "Ich", 
     "Department": 2 
    }, 
    { 
     "Name": "Charlie", 
     "LastName": "Sheen", 
     "Department": 3 
    }, 
    { 
     "Name": "Peter", 
     "LastName": "Petrelli", 
     "Department": 5 
    }, 
    { 
     "Name": "Alan", 
     "LastName": "Harper", 
     "Department": 6 
    }, 
    { 
     "Name": "Ann", 
     "LastName": "Bottle", 
     "Department": 3 
    }, 
] 

И я хочу, чтобы получить результаты с отчетливым Department, я не забочусь о порядке, только 1 результата за Department. Я пробовал с скоплениями, но мне удалось получить только Deppartments с doc_count. Они запроса я пытался что-то вроде:

{ 
    "aggs": { 
    "deppartments": { 
     "terms": { 
     "field": "Department" 
     } 
    } 
    },"size": 0 
} 

возвращает:

"buckets": [ 
    { 
     "key": 2, 
     "doc_count": 1 
    }, 
    { 
     "key": 3, 
     "doc_count": 2 
    }, 
    { 
     "key": 5, 
     "doc_count": 1 
    }, 
    { 
     "key": 6, 
     "doc_count": 1 
    }, 
] 

Когда я хочу что-то вроде:

[ 
    { 
     "Name": "Alex", 
     "LastName": "Ich", 
     "Department": 2 
    }, 
    { 
     "Name": "Charlie", 
     "LastName": "Sheen", 
     "Department": 3 
    }, 
    { 
     "Name": "Peter", 
     "LastName": "Petrelli", 
     "Department": 5 
    }, 
    { 
     "Name": "Alan", 
     "LastName": "Harper", 
     "Department": 6 
    } 
] 

ответ

1

Вы можете использовать Top hits aggregation для этого

{ 
    "aggs": { 
    "departments": { 
     "terms": { 
     "field": "Department", 
     "size": 10 
     }, 
     "aggs": { 
     "search_results": { 
      "top_hits": { 
      "size": 10 <--- you can change the size to 1 if you want 
      } 
     } 
     } 
    } 
    }, 
    "size": 0 
} 

Помогает ли это?

+0

Он сделал трюк. – Astaroth

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