【问题标题】:How data is getting mapped in Elastic search in ELK?如何在 ELK 的弹性搜索中映射数据?
【发布时间】:2020-07-20 12:59:49
【问题描述】:

我是 ELK 的新手,我正在学习它。在我的项目中,他们从 Amazon S3 -> File Beat -> logstash -> Elastic search -> Kibanna 导入数据。

在logstash文件中,他们直接导入数据并发送到弹性搜索,如下所示,配置文件中没有提到索引,

output  elasticsearch 
{
hosts => ["http://localhost:9200"]
}

在 Amazon s3 中,我们有来自 Salesforce 的日志,未来我们将从多个来源实施。

在 Elastic 搜索中,我可以看到 41 个索引(Used Get Curl script)存在。假设如果我们在 logstash 中保持相同的设置,那么所有日志(多个来源)将以相同的方式发送到弹性搜索。 我想知道数据是如何映射到弹性搜索中的特定索引的??

在许多教程中,他们在 logstash 配置文件中给出了索引,因此在 kibanna 中我们可以看到索引名称和时间戳。我试图通过在 Amazon S3 中放置一个示例 Mulesoft 日志文件来进行检查,但我无法在 Kibanna 中找到这些数据。那么我是否需要再创建一个名为 Mule 的新索引以及映射?

我的项目中没有 ELK 专家,所以请指导我如何处理这个问题,否则任何参考资料都会更有帮助。

【问题讨论】:

标签: elasticsearch logstash elastic-stack elk


【解决方案1】:

此页面 (https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html) 记录了 Logstash 的 Elasticsearch 输出插件。

正如您在“配置选项”部分中所见,index 选项不是强制性的。如果未指定此选项,则其默认值为logstash-%{+YYYY.MM.dd}

话虽如此,文档将被索引到前缀为“logstash-”的索引中,后跟提取日期。例如:

  • logstash-2020.04.07

  • logstash-2020.04.08

由于您组织中的某个人已选择使用默认值,因此可以省略此选项。这解释了为什么在 Logstash 配置中找不到特定的索引名称。如果您需要将文档索引到不同的索引中,那么您必须为 index 选项设置一个特定的值。

如果您事先没有通过索引模板设置显式映射,Elasticsearch 将使用动态映射 (https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-mapping.html) 自动创建这些索引。为了在 kibana 中查看数据,首先需要创建一个与索引名称匹配的索引模式。

希望能帮到你。

【讨论】:

  • 感谢您的回答。我已经使用 GET Curl 脚本对其进行了检查,但我没有看到任何名称为“logstash-date”的索引。我可以看到名称为 sf-Apex 的索引,类似这样,大约有 40 个类似的索引存在,并且它具有映射部分。请让我知道如何进一步处理。
  • 你的意思是“有映射部分”。您需要小心 Elasticsearch 中的“映射”一词。你到底是什么意思?此外,您需要分享确切的 Logstash 管道配置,以便我们为您提供帮助。因此,请使用这些信息更新您的原始问题。
  • 对不起,我已经弄清楚他们是如何实施的。他们使用 Lambda 函数从应用程序中提取日志并将其保存在 S3 中,然后将日志直接推送到 ES 中的特定索引。谢谢你的帮助。还有一个小疑问 - 如果我在 logstash conf 文件中创建一个 cron 作业以从 Mule 应用程序中提取数据,那么数据将保存在弹性服务器中吗?所以在 s3 输出插件的帮助下,我可以将它保存在 s3 存储桶而不是弹性云中吗? elastic.co/blog/…
猜你喜欢
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 2015-05-06
  • 1970-01-01
  • 2018-05-20
  • 2015-12-08
相关资源
最近更新 更多