2016-09-25 54 views
4

Kibana的用户界面允许用户创建一个脚本字段,该字段作为索引的一部分存储(以下屏幕截图)。这是如何以编程方式完成的?特别是使用NEST客户端或Elasticsearch低级客户端。如何以编程方式创建Kibana(Elasticsearch)脚本字段?

Kibana UI for the Indice with the Scripted Fields tab highlighted

注意,我不如何创建添加式/脚本字段作为查询的一部分,我专门找了如何将其添加为索引的一部分,如果映射被创建,以便查询可以引用它而不必明确包含它。

+0

FYI,从[文档](https://www.elastic.co/guide/en/kibana/current/managing-fields.html#create-scripted-field)好像脚本字段不能被查询。 – fylie

回答

1

Kibana仪表板存储在.kibana索引中。要导出仪表板,您可以像查询其他索引一样查询Kibana索引。例如,curl -XGET http://localhost:9200/.kibana/_search?type=dashboard&pretty会显示仪表板的JSON。您可以导出模板,将脚本字段添加到JSON,然后再次POST。由于Kibana使用标准的Elasticsearch索引,所以普通的Elasticsearch API将适用于修改Kibana仪表板。 This可能会提供一点澄清。

1

在撰写本文时,当前版本5.2没有官方的方式来做到这一点。

这是我要做的事:

  1. 获取索引字段:GET /.kibana/index-pattern/YOUR_INDEX
  2. 你的脚本字段添加到_source.fields(如串,通知scaped引号)

    "fields":"[...,{\"name\":\"test\",\"type\":\"number\",\"count\":0,\"scripted\":true,\"script\":\"doc['area_id'].value\",\"lang\":\"painless\",\"indexed\":false,\"analyzed\":false,\"doc_values\":false,\"searchable\":true,\"aggregatable\":true}]" 
    
  3. 后回_source JSON来/.kibana/index-pattern/YOUR_INDEX

    { 
        "title":"YOUR_INDEX", 
        "timeFieldName":"time", 
        "fields":"[...,{\"name\":\"test\",...}]" 
    } 
    
+0

这真的太糟糕了。它使我不使用这个功能。假设我有一个水果生意,我想在图表中显示每月销售的苹果和橙子的数量。现在我想添加一个'总计'。我使用脚本字段实现了这一点,它的工作非常完美。但是因为我不能用索引导出/导入它,所以我现在选择修改我的加载脚本来计算它,并将其添加到单独的字段中。 – MichielB