2016-08-29 3 views
0

Предположим, что есть документы, представляющие книги, и есть поле под названием автор. Какое агрегирование может получить значение , которое содержится в большинстве документов? Или перефразировал, автор, который написал больше всего книг?Найти значение поля, которое содержится в большинстве документов

В случае, если это неясно из тега, вопрос относится к Elasticsearch.

например.

{ 
    "name" : "Book1" 
    "author" : "John" 
}, 
{ 
    "name" : "Book3" 
    "author" : "Mike" 
}, 
{ 
    "name" : "Book2" 
    "author" : "John" 
}, 
{ 
    "name" : "Book4" 
    "author" : "Frank" 
} 

Для приведенных выше данных, Джон должен быть возвращен, так как есть 2 документа с ним в качестве автора, в то время как только одна книга другие.

Я пробовал с value_count и мощностью, но это возвращает только число, а не значение.

ответ

0

Фактически это я нашел, что это довольно просто, используя термины агрегация. Оставь его, может быть, другие найдут это полезным.

Reference

например, Из приведенных выше данных:

{ 
    "aggs": { 
     "author_count": { 
      "terms": { 
       "size": 2, 
       "field": "book.author" 
      } 
    } 
} 
Смежные вопросы