ElasticSearch Отсутствует определение для агрегации [unique_users] Ошибка - PullRequest
0 голосов
/ 17 мая 2018

Я использую ES с Ruby on Rails, я нахожусь в ситуации, когда мне приходится перечислять всех уникальных пользователей, поэтому ниже приведен код, который я использую для его получения.

    buckets['unique_users'] = {
      filter: { match_all: {} },
      aggregations: {
        users_count: {
          cardinality: {
            field: :customer_email_key
          }
        }
      }
    }

и ниже - ответ:

unique_users: {
  doc_count: 134,
    users_count: {
      value: 125
    }
  }
}

Это только показывает количество уникальных пользователей, но этот запрос не показывает список адресов электронной почты, поэтому, где проблемав этом запросе.Кто-нибудь может направить меня?

             ==========  New Edits  ==========

Теперь я использую код и он отлично работает с списком пользователей, и он имеет значение.

  def buckets_for_unique_users(buckets, aggregations)
    buckets['unique_users'] = {
      filter: { match_all: {} },
      aggregations: {
        users_count: {
          cardinality: {
            field: :customer_email_key
          }
        },
        details: {
          terms: {
            field: :customer_email_key,
            size: 200
          }
        }
      }
    }
  end

ответ на приведенный выше код выглядит следующим образом:

unique_users: {
  doc_count: 134,
  users_count: {
   value: 125
  },
  details: {
    doc_count_error_upper_bound: 0,
    sum_other_doc_count: 0,
    buckets: [
      {
        key: "example@gmail.com",
        doc_count: 2
      }
      {....}
    ]
}

Теперь все идет идеально, но есть что-то в ответе, что немного сбивает с толку, поэтому я должен удалить это, то есть doc_count: 134 потому что я хочу сохранить users_count и удалить doc_count .Поэтому для этого я удалил фильтр : {match_all: {}}, из метода, а затем получил ошибку Missing definition for aggregation [unique_users]

1 Ответ

0 голосов
/ 17 мая 2018

Вам необходимо использовать условия агрегирования :

GET /_search
{
    "aggs" : {
        "users" : {
            "terms" : { "field" : "customer_email_key" }
        }
    }
}
...