gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:29:37 24 4
gpt4 key购买 nike

我正在尝试提出一个优化的架构来在 Elasticsearch 上存储事件日志消息。

这是我的规范/需求:

  • 消息是只读的;一旦输入,它们只会被查询以进行报告。
  • 没有自由文本搜索。用户将仅使用过滤器进行报告。
  • 必须能够执行 timestamp 范围查询。
  • 主要需要按agentcustomer交互进行过滤(除其他字段外)。
  • 客户代理 属于同一位置

因此最常执行的查询将是:获取所有给定 client_idcustomer_idtimestampLogItem > 范围。

这是 LogItem 的样子:

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

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

我一直在读what is an elasticsearch index?using elasticsearch to serve events for customers了解良好的索引架构,但我需要专业人士的帮助。

所以这是我的问题:

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

  2. 目前我正在使用一个大索引。 如果我为每个 location_id 创建一个索引,我该如何使用分片进一步组织我的记录?

  3. 鉴于上述规范,是否有更好的架构可以建议?

  4. 我应该使用哪些字段过滤查询

编辑:这是从我的应用运行的示例查询:

{
"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
}
}
}

最佳答案

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

分片不是用于组织您的数据,而是用于分发数据并最终横向扩展。你如何做到这一点取决于你的数据和你用它做什么。看看这个演讲:http://vimeo.com/44716955 .

关于您关于过滤器 VS 查询的问题,请查看 this其他问题。

关于java - 用于日志记录的 Elasticsearch - 需要架构建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19258185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com