Kibana的UI允许用户创建一个脚本化字段,该字段存储为索引的一部分(下面的屏幕截图)。怎么能以编程方式完成?特别是,使用NEST客户端或Elasticsearch低级客户端。
Kibana UI for the Indice with the Scripted Fields tab highlighted
请注意,我不询问如何创建添加表达式/脚本字段作为查询的一部分,我特别在寻找如何将其添加为索引的一部分时创建映射,以便查询可以引用它而无需显式包含它。
答案 0 :(得分:1)
Kibana仪表板存储在.kibana索引中。要导出仪表板,您可以像查询任何其他索引一样查询Kibana索引。例如,curl -XGET http://localhost:9200/.kibana/_search?type=dashboard&pretty
会显示仪表板的JSON。您可以导出模板,将脚本字段添加到JSON,然后再次POST。由于Kibana使用标准的Elasticsearch索引,因此普通的Elasticsearch API将适用于修改Kibana仪表板。 This可能会提供更多说明。
答案 1 :(得分:1)
在撰写本文时,当前版本5.2没有正式的方法来执行此操作。
我就是这样做的:
将您的脚本字段添加到 _source.fields (作为字符串,注意跳过的引号)
"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}]"
将_source json邮寄回/.kibana/index-pattern/YOUR_INDEX
{
"title":"YOUR_INDEX",
"timeFieldName":"time",
"fields":"[...,{\"name\":\"test\",...}]"
}