当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch用于日志记录-需要架构建议

盖玉石
2023-03-14

我正试图提出一种优化的架构,将事件日志消息存储在Elasticsearch上。

以下是我的规格/需求:

  • 消息是只读的;输入后,仅查询报告

因此,执行最频繁的查询将是:获取给定的所有登录项、客户id和时间戳范围。

以下是登录项的外观:

"_source": {
    "agent_id" : 14,
    "location_id" : 2,
    "customer_id" : 5289,
    "timestamp" : 1320366520000, //Java Long millis since epoch
    "event_type" : 7,
    "screen_id" : 12
}

我需要帮助索引我的数据。

我一直在读什么是elasticsearch索引?使用elasticsearch为客户提供事件服务,以获得良好索引架构的想法,但我需要专业人士的帮助。

所以我的问题是:

>

  • 文章建议“每天创建一个索引”。我将如何使用该架构进行范围查询?(例如:可以查询索引范围吗?)

    目前我正在使用一个大索引。如果我为每个location\u id创建一个索引,我如何使用碎片来进一步组织我的记录?

    鉴于上述规格,您能推荐一种更好的架构吗?

    我应该用vs query过滤哪些字段?

    编辑:以下是从我的应用程序运行的示例查询:

    {
      "query" : {
        "bool" : {
          "must" : [ {
            "term" : {
              "agent_id" : 6
            }
          }, {
            "range" : {
              "timestamp" : {
                "from" : 1380610800000,
                "to" : 1381301940000,
                "include_lower" : true,
                "include_upper" : true
              }
            }
          }, {
            "terms" : {
              "event_type" : [ 4, 7, 11 ]
            }
          } ]
        }
      },
      "filter" : {
        "term" : {
          "customer_id" : 56241
        }
      }
    }
    
  • 共有2个答案

    吴西岭
    2023-03-14

    好好看看logstash(和kibana)。他们都是为了解决这个问题。如果您决定为此推出自己的架构,您可以复制他们的一些设计。

    柳浩大
    2023-03-14

    您绝对可以搜索多个索引。例如,您可以使用通配符或逗号分隔的索引列表,但请记住索引名称是字符串,而不是日期。

    碎片不是用于组织数据,而是用于分发数据并最终扩展。你如何做到这一点取决于你的数据以及你如何处理它。看看这个演讲:http://vimeo.com/44716955 .

    关于过滤器与查询的问题,请看另一个问题。

     类似资料:
    • 我试图实现log4j日志记录类。代码的包结构如下所述。目前我的log4j.properties放在包的资源下。 我有时确实会得到日志,但有时调试器会显示“log4j: WARN无法为记录器找到附加程序”所以我最后得到了: 我应该在哪里放置log4j.properties来获得MyTest中一致的日志? 同一个项目可以在不同的包中有多个log4j.properties吗? 如何将调试器/编译器的lo

    • 我试过以下伐木工人 Java日志API Log4j slf4j 所有这些都需要类级别的记录器声明,如下面的声明 这在我看来很可怕,java中是否有不需要此声明的logger框架? 我在寻找的是,我可以有一个全球宣言,比如 但当我打电话给Logger时。日志(…)来自XXX类。类,则记录器应使用XXX。类名。

    • 问题内容: 是否有一个Logger可以轻松记录我的堆栈跟踪记录(我得到了什么 )?我搜索了log4j文档,但未发现有关记录堆栈跟踪的任何信息。 我可以自己做 但我不想到处重复这段代码。 如果log4j不会为我执行此操作,是否还有另一个日志记录程序包将为我记录stacktrace? 谢谢。 问题答案: 使用log4j可通过以下方式完成: 第一个参数是要显示的消息,第二个参数是记录堆栈跟踪的异常(可抛

    • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

    • 问题内容: 我正在考虑将Redis用于Web应用程序日志记录目的。我用谷歌搜索,有人将日志转储到Redis队列/列表中,然后将计划的工作人员转储到磁盘中。 http://nosql.mypopescu.com/post/8652869828/another-redis-use-case- centralized-logging 我希望寻求理解,为什么不直接使用Redis持久化到磁盘?如果我分配了一

    • logging 模块自 2.3 版以来一直是 Python 标准库的一部分。在 PEP 282 中有对它的简洁描述。除了 基础日志教程 之外,这些文档是非常难以阅读的。 日志记录一般有两个目的: 诊断日志 记录与应用程序操作相关的日志。例如,当用户遇到程序报错时, 可通过搜索诊断日志以获得上下文信息。 审计日志 为商业分析而记录的日志。从审计日志中,可提取用户的交易信息, 并结合其他用户资料构成用