首页 > 解决方案 > 在 ElasticSearch 中为审计编制索引

问题描述

有一个基于微服务的架构,其中每个服务都有不同类型的实体。例如:

服务 1:

{
    "entity_type": "SKU",
    "sku": "123",
    "ext_sku": "201",
    "store": "1",
    "product": "abc",
    "timestamp": 1564484862000
}

服务 2:

{
    "entity_type": "PRODUCT",
    "product": "abc",
    "parent": "xyz",
    "description": "curd",
    "unit_of_measure": "gm",
    "quantity": "200",
    "timestamp": 1564484863000
}

服务 3:

{
  "entity_type": "PRICE",
  "meta": {
    "store": "1",
    "sku": "123"
  },
  "price": "200",
  "currency": "INR",
  "timestamp": 1564484962000
}

服务 4:

{
  "entity_type": "INVENTORY",
  "meta": {
    "store": "1",
    "sku": "123"
  },
  "in_stock": true,
  "inventory": 10,
  "timestamp": 1564484864000
}

我想编写一个由elasticsearch支持的审计服务,它将摄取所有这些实体,并将基于, , ,进行索引。entity_typestoreskutimestamp

elasticsearch在这里会是一个不错的选择吗?另外,索引将如何工作?因此,例如,如果我搜索store=1,它应该返回所有具有storeas的不同实体1。其次,我能否获得 2 之间的所有实体timestamps

ES 和 Kibana(可视化)在这里会是不错的选择吗?

标签: elasticsearchindexingkibanaauditingaudit-logging

解决方案


是的。您的用例几乎与过滤器上下文下的文档中描述的完全一样:

在过滤器上下文中,查询子句回答“此文档与此查询子句匹配吗?”的问题。答案很简单,是或否——不计算分数。过滤上下文主要用于过滤结构化数据,例如

  • 这个时间戳是否在 2015 年到 2016 年的范围内?
  • 状态字段是否设置为published

推荐阅读