Adding data to Elasticsearch
editAdding data to Elasticsearch
editYou have a number of options for getting data into Elasticsearch, referred to as ingesting or indexing your data. Use Elastic Agent, Beats, Logstash, Elastic language clients, Elastic connectors, or the Enterprise Search web crawler. The option (or combination) selected depends on whether you are indexing general content or timestamped data.
- General content
- Index content like HTML pages, catalogs and other files. Send data directly to Elasticseach from your application using an Elastic language client. Otherwise use Elastic content connectors or the Elastic web crawler.
- Timestamped data
-
The preferred way to index timestamped data is to use Elastic Agent. Elastic Agent is a single, unified way to add monitoring for logs, metrics, and other types of data to a host. It can also protect hosts from security threats, query data from operating systems, and forward data from remote services or hardware. Each Elastic Agent based integration includes default ingestion rules, dashboards, and visualizations to start analyzing your data right away. Fleet Management enables you to centrally manage all of your deployed Elastic Agents from Kibana.
If no Elastic Agent integration is available for your data source, use Beats to collect your data. Beats are data shippers designed to collect and ship a particular type of data from a server. You install a separate Beat for each type of data to collect. Modules that provide default configurations, Elasticsearch ingest pipeline definitions, and Kibana dashboards are available for some Beats, such as Filebeat and Metricbeat. No Fleet management capabilities are provided for Beats.
If neither Elastic Agent or Beats supports your data source, use Logstash. Logstash is an open source data collection engine with real-time pipelining capabilities that supports a wide variety of data sources. You might also use Logstash to persist incoming data to ensure data is not lost if there’s an ingestion spike, or if you need to send the data to multiple destinations.
Designing a data ingestion pipeline
editWhile you can send data directly to Elasticsearch, data ingestion pipelines often include additional steps to manipulate the data, ensure data integrity, or manage the data flow.
This diagram focuses on timestamped data.
Data manipulation
editIt’s often necessary to sanitize, normalize, transform, or enrich your data before it’s indexed and stored in Elasticsearch.
- Elastic Agent and Beats processors enable you to manipulate the data at the edge. This is useful if you need to control what data is sent across the wire, or need to enrich the raw data with information available on the host.
- Elasticsearch ingest pipelines enable you to manipulate the data as it comes in. This avoids putting additional processing overhead on the hosts from which you’re collecting data.
- Logstash enables you to avoid heavyweight processing at the edge, but still manipulate the data before sending it to Elasticsearch. This also enables you to send the processed data to multiple destinations.
One reason for preprocessing your data is to control the structure of the data that’s indexed into Elasticsearch—the data schema. For example, use an ingest pipeline to map your data to the Elastic Common Schema (ECS). Alternatively, use runtime fields at query time to:
- Start working with your data without needing to understand how it’s structured
- Add fields to existing documents without reindexing your data
- Override the value returned from an indexed field
- Define fields for a specific use without modifying the underlying schema
Data integrity
editLogstash boosts data resiliency for important data that you don’t want to lose. Logstash offers an on-disk persistent queue (PQ) that absorbs bursts of events without an external buffering mechanism. It attempts to deliver messages stored in the PQ until delivery succeeds at least once.
The Logstash dead letter queue (DLQ) provides on-disk storage for events that Logstash can’t process, giving you a chance to evaluate them. You can use the dead_letter_queue input plugin to easily reprocess DLQ events.
Data flow
editIf you need to collect data from multiple Beats or Elastic Agents, consider using Logstash as a proxy. Logstash can receive data from multiple endpoints, even on different networks, and send the data on to Elasticsearch through a single firewall rule. You get more security for less work than if you set up individual rules for each endpoint.
Logstash can send to multiple outputs from a single pipeline to help you get the most value from your data.
Where to go from here
editWe have guides and many hands-on tutorials to help get you started with ingesting data into your cluster.
Ingest data for Elastic solutions
edit- Get started with Elastic Observability
- Use Elastic Observability to gain deeper insight into the behavior of your applications and systems. Follow our guides to ingest various data types, such as logs and metrics, traces and APM, and data from Splunk. There are also several tutorials to choose from.
- Add data to Elastic Security
- Use Elastic Security to quickly detect, investigate, and respond to threats and vulnerabilities across your environment. You can use Elastic Agent to ingest data into the Elastic Defend integration, or with many other Integrations that work together with Elastic Security. You can also ingest data from Splunk or from various third party collectors that ship ECS compliant security data.
Ingest data with Elastic Agent, Beats, and Logstash
editFor users who want to build their own solution, we can help you get started ingesting your data using Elasticsearch Platform products.
- Elastic integrations
- Elastic integrations are a streamlined way to connect your data to the Elastic Stack. Integrations are available for popular services and platforms, like Nginx, AWS, and MongoDB, as well as many generic input types like log files.
- Beats and Elastic Agent comparison
- Beats and Elastic Agent can both send data to Elasticsearch either directly or via Logstash. You can use this guide to determine which of these primary ingest tools best matches your use case.
- Introduction to Fleet management
- Fleet provides a web-based UI in Kibana for centrally managing Elastic Agents and their policies.
- Logstash introduction
- Use Logstash to dynamically unify data from disparate sources and normalize the data into destinations of your choice.
Ingest data with Elastic web crawler, connectors
edit- Add data with the web crawler
- Use the web crawler to programmatically discover, extract, and index searchable content from websites and knowledge bases.
- Add data with connectors
- Sync data from an original data source to an Elasticsearch index. Connectors enable you to create searchable, read-only replicas of your data sources.
Ingest data from your application
edit- Elasticsearch language clients
- Use the Elasticsearch language clients to ingest data from an application into Elasticsearch.
- Enterprise Search language clients
- The Enterprise Search programming language client libraries provide native APIs for those languages to ingest data into Enterprise Search, App Search, and Workplace Search.
- Application ingest tutorials
- These hands-on guides demonstrate how to use the Elasticsearch language clients to ingest data from your applications.
Manipulate and pre-process your data
edit- Ingest pipelines
- Elasticsearch ingest pipelines let you perform common transformations on your data before indexing.
- Elastic Agent processors
- Use the Elastic Agent lightweight processors to parse, filter, transform, and enrich data at the source.
- Creating a Logstash pipeline
- Create a Logstash pipeline by stringing together plugins—inputs, outputs, filters, and sometimes codecs—in order to process your data during ingestion.
Sample data
editIf you’re just learning about Elastic and don’t have a particular use case in mind, you can load one of the sample data sets in Kibana. Complete with sample visualizations, dashboards, and more, they provide a quick way to see what’s possible with Elastic.