Information about users that will become paying


We are indexing events performed by our users in an effort to create a better service. Each event is indexed into elasticsearch in real time, and we have a couple of dashboards visualizing the common actions. An example of one of these events in elastic could be something like this:

  "_source": {
    "indexTime": 1601286327342,
    "eventType": "PAGE_FLIP",
    "userId": "123",
    "userCreatedAt": 1536096932688,
    "userLastTransactionAt": 0,
    "bookId": "abc",
    "pageNumber": 2,
  "fields": {
    "daysSinceSignup": [
    "indexTime": [
    "daysUntilTestPeriodEnds": [
    "userCreatedAt": [
    "userLastTransactionAt": [

One of these events is to register a card (i.e. not use only the free version, but start paying us). This is obviously very important for us to track, but I would also like to visualize the the difference in actions leading up to someone starting a subscription.

Do I need to reindex all previous (often > 1000) events for a user when he/she subscripbes to be able to create visualizations in kibana of this?


You have, what we refer to as, entity centric indexing. Where everything this built around your userID field.

The alternate approach is event based, where each action creates a new event and you can then do this sort of reporting based on that.

This sounds interesting. We're small enough to change our indexing setup if it makes sense. Do you have any documentation or pointers on how this would work?

It's an activity/click stream approach, where each action is logged as an event in Elasticsearch. It's no different to a web/email log in its implementation (if that's easier to imagine).

You can still take that stream and then turn it into an entity centric approach, as additional indices. That way you get the best of both approaches.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.