I'm indexing directly into ES.
Config is very close to the default, just because it works without problems (at the start). However, here's a sample config from a live host.
Please also note the shards/indices list below the config!
###################### Metricbeat Configuration Example #######################
#==========================  Modules configuration ============================
metricbeat.config.modules:
  # Glob pattern for configuration loading
  path: ${path.config}/modules.d/*.yml
  # Set to true to enable config reloading
  reload.enabled: false
  # Period on which files under path should be checked for changes
  #reload.period: 10s
#==================== Elasticsearch template setting ==========================
setup.template.settings:
  index.number_of_shards: 1
  index.codec: best_compression
  #_source.enabled: false
#================================ General =====================================
# The name of the shipper that publishes the network data. It can be used to group
# all the transactions sent by a single shipper in the web interface.
#name:
# The tags of the shipper are included in their own field with each
# transaction published.
#tags: ["service-X", "web-tier"]
# Optional fields that you can specify to add additional information to the
# output.
#fields:
#  env: staging
#============================== Dashboards =====================================
# These settings control loading the sample dashboards to the Kibana index. Loading
# the dashboards is disabled by default and can be enabled either by setting the
# options here, or by using the `-setup` CLI flag or the `setup` command.
#setup.dashboards.enabled: false
# The URL from where to download the dashboards archive. By default this URL
# has a value which is computed based on the Beat name and version. For released
# versions, this URL points to the dashboard archive on the artifacts.elastic.co
# website.
#setup.dashboards.url:
#============================== Kibana =====================================
# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:
  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  #host: "localhost:5601"
  # Kibana Space ID
  # ID of the Kibana Space into which the dashboards should be loaded. By default,
  # the Default Space will be used.
  #space.id:
#================================ Outputs =====================================
# Configure what output to use when sending the data collected by the beat.
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["192.168.0.195:9200"]
  # Enabled ilm (beta) to use index lifecycle management instead daily indices.
  #ilm.enabled: false
  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"
#----------------------------- Logstash output --------------------------------
#output.logstash:
  # The Logstash hosts
  #hosts: ["localhost:5044"]
  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"
  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"
#================================ Processors =====================================
# Configure processors to enhance or manipulate events generated by the beat.
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
#================================ Logging =====================================
# Sets log level. The default log level is info.
# Available log levels are: error, warning, info, debug
#logging.level: debug
# At debug level, you can selectively enable logging only for some components.
# To enable all selectors use ["*"]. Examples of other selectors are "beat",
# "publish", "service".
#logging.selectors: ["*"]
Here's a snippet of the _cat/indices?v list - every host is creating an index each day,  which seems to be not the best solution. However, I dunno what's the best solution here... One big index of all hosts per year? One index per week of all hosts?
The output of each metricbeat host is the same - system metrics. So technically it seems to be useful to put all data in one index, but I couldn't find a simple answer to this simple question 
yellow open   metricbeat-6.4.0-2019.03.17 6Sc5wLadSHO1CrX7KbRecQ   1   1     441585            0     73.5mb         73.5mb
yellow open   metricbeat-6.6.2-2019.04.02 MnLxvzQPRYuKRVZUUhIS_A   1   1     545701            0    115.8mb        115.8mb
yellow open   metricbeat-6.4.0-2018.11.05 e-kxrEOeSHmlBGsVpKJFog   1   1    6776060            0      1.1gb          1.1gb
yellow open   metricbeat-6.5.1-2018.12.23 SJE2H_kMSq-XsnrMheNFDg   1   1     196861            0     33.5mb         33.5mb
yellow open   metricbeat-6.5.0-2019.01.07 NzQs3oJqQo-Lr16wJDRMzQ   1   1    1022098            0    163.1mb        163.1mb
yellow open   metricbeat-6.4.0-2018.10.29 NOPk3ZLXQLizufAHZOm7yA   1   1    6734894            0        1gb            1gb
yellow open   metricbeat-6.2.4-2018.10.14 vNKq-LGOQp-ETrzn8a2MUg   1   1     609153            0    135.8mb        135.8mb
yellow open   metricbeat-6.2.4-2019.03.06 wP8i1oQbSl2NDts_2mPIMA   1   1     530253            0    123.9mb        123.9mb
In my case, I just want an overview of system metrics of my whole setup. I have a grafana and kibana dashboard made by myself to monitor the values I need, which works perfectly (but the performance).
Until ES6 I used elasticsearch-curator to cleanup metrics older than 180 days, which isn't working anymore in ES7. That's why I try to save the data in an appropriate way.
If possible, I'd like to store data 5 years, however, actually I'm working with 180days so far, but I'd like to expand the time span.
Actually I have 300gb in use. There are  ~1,2tb raid5 ssd space usable.