索引转换

索引汇总作业可以让你通过将旧数据汇总到压缩的索引中来降低数据粒度,而转换作业则可以让你围绕某些字段创建不同、汇总的数据视图,以便以不同方式可视化或分析数据。

例如,假设你有分散在多个字段和类别中的航空数据,你希望按航空公司、季度和价格来查看数据的摘要。你可以使用转换作业来创建一个按这些特定类别组织的新汇总索引。

你可以通过两种方式使用转换作业:

  1. 使用 UDB-SX 仪表板 UI 指定要转换的索引以及要用于过滤原始索引的任何可选数据过滤器。然后选择要转换的字段以及转换中使用的聚合。最后,定义作业要遵循的调度计划。

  2. 使用转换 API 指定作业的所有详细信息:要转换的索引、希望转换索引具有的目标组、要用于分组列的任何聚合以及作业要遵循的调度计划。

UDB-SX 仪表板提供了你创建的作业及其相关信息的详细摘要,例如关联的索引和作业状态。你可以在创建前查看和编辑作业的详细信息和选择,甚至在选择的要转换的字段时可以预览转换索引的数据。然而,你也可以使用 REST API 创建转换作业和预览转换作业结果,但必须知道所有必要的设置和参数,并将它们作为 HTTP 请求体的一部分提交。将你的转换作业配置作为 JSON 脚本提交,为你提供了更多的可移植性,允许你共享和复制转换作业,而使用 UDB-SX 仪表板则更难做到这一点。

你的用例将帮助你决定使用哪种方法来创建转换作业。

创建转换作业

如果你的集群中没有任何数据,你可以使用 UDB-SX 仪表板中的示例航班数据来尝试转换作业。否则,在启动 UDB-SX 仪表板后,选择 索引管理。选择 转换作业,然后选择 创建转换作业

步骤 1:选择索引

  1. 作业名称和描述 部分,为作业指定名称和可选描述。

  2. 索引 部分,选择源索引和目标索引。你可以选择现有的目标索引,也可以通过输入新索引的名称来创建新索引。如果只想转换源索引的子集,请选择 编辑数据过滤器,并使用 UDB-SX 查询 DSL 指定源索引的子集。

  1. 选择 下一步

步骤 2:选择要转换的字段

指定索引后,可以选择要在转换作业中使用的字段,以及是否使用分组或聚合。

你可以使用分组将数据放置在转换索引中的单独存储桶中。例如,如果你想对示例航班数据中的所有机场目的地进行分组,可以将 DestAirportID 字段分组到目标字段 DestAirportID_terms 字段中,转换作业完成后,你可以在转换索引中找到分组的机场 ID。

另一方面,聚合可以让你执行简单的计算。例如,你可以在转换作业中包含一个聚合,以定义一个名为 sum_of_total_ticket_price 的新字段,该字段计算所有机票的总和,然后在转换索引中分析新汇总的数据。

  1. 在数据表中,选择要转换的字段,并展开列标题中的下拉菜单,以选择要使用的分组或聚合。

    目前,转换作业支持直方图、日期直方图和术语分组。在聚合方面,你可以从 sumavgmaxminvalue_countpercentilesscripted_metric 中选择。有关聚合的更多信息,

  2. 对要转换的任何其他字段重复步骤 1。

  3. 选择完要转换的字段并验证转换后,选择 下一步

步骤 3:指定调度计划

你可以配置转换作业运行一次或按调度计划多次运行。默认情况下,转换作业处于启用状态。

  1. 选择作业是否应为 连续。连续作业在每个 转换执行间隔 执行,并递增转换新修改的存储桶,其中可以包括添加到源索引的新数据。非连续作业仅执行一次。

  2. 对于 转换执行间隔,以分钟、小时或天为单位指定转换间隔。此间隔决定连续作业应执行的频率,非连续作业在间隔过后执行一次。

  3. 高级 下,为 每次执行的页数 指定可选数量。较大的数字意味着每次搜索请求中处理更多数据,但也使用更多内存并导致更高的延迟。超过允许的内存限制可能会导致异常和错误发生。

  4. 选择 下一步

步骤 4:查看并确认详细信息

确认转换作业的详细信息正确后,选择 创建转换作业。如果要编辑作业的任何部分,请选择要更改的部分的 编辑,并进行必要的更改。创建作业后,无法更改聚合或分组。

步骤 5:搜索转换后的索引。

转换作业完成后,你可以使用 _search API 操作搜索目标索引。

GET <target_index>/_search

例如,在对航班数据运行基于 DestAirportID 字段转换的转换作业后,你可以运行以下请求,返回所有具有 SFO 值的字段。

示例请求

GET finished_flight_job/_search
{
  "query": {
    "match": {
      "DestAirportID_terms" : "SFO"
    }
  }
}

示例响应

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 4,
      "relation" : "eq"
    },
    "max_score" : 3.845883,
    "hits" : [
      {
        "_index" : "finished_flight_job",
        "_id" : "dSNKGb8U3OJOmC4RqVCi1Q",
        "_score" : 3.845883,
        "_source" : {
          "transform._id" : "sample_flight_job",
          "transform._doc_count" : 14,
          "Carrier_terms" : "Dashboards Airlines",
          "DestAirportID_terms" : "SFO"
        }
      },
      {
        "_index" : "finished_flight_job",
        "_id" : "_D7oqOy7drx9E-MG96U5RA",
        "_score" : 3.845883,
        "_source" : {
          "transform._id" : "sample_flight_job",
          "transform._doc_count" : 14,
          "Carrier_terms" : "Logstash Airways",
          "DestAirportID_terms" : "SFO"
        }
      },
      {
        "_index" : "finished_flight_job",
        "_id" : "YuZ8tOt1OsBA54e84WuAEw",
        "_score" : 3.6988301,
        "_source" : {
          "transform._id" : "sample_flight_job",
          "transform._doc_count" : 11,
          "Carrier_terms" : "ES-Air",
          "DestAirportID_terms" : "SFO"
        }
      },
      {
        "_index" : "finished_flight_job",
        "_id" : "W_-e7bVmH6eu8veJeK8ZxQ",
        "_score" : 3.6988301,
        "_source" : {
          "transform._id" : "sample_flight_job",
          "transform._doc_count" : 10,
          "Carrier_terms" : "JetBeats",
          "DestAirportID_terms" : "SFO"
        }
      }
    ]
  }
}

索引编解码器注意事项

有关索引编解码器的注意事项,请参见 索引编解码器