如何在 kibana 中按条件填充脚本字段值
how to fill a scripted field value by condition in kibana
我正在使用 Kibana 4,我的文档包含两个整数字段,分别称为:'x' 和 'y'。我想在 Kibana 中创建一个脚本字段 return 将 'x' 的除法值 'y' 如果 'y'<> 0。否则:return 值'x'.
我已尝试将此脚本添加到新的屏幕代码继承字段:
doc['x'].value > 0 ? doc['x'].value/doc['y'].value : doc['x'].value;
但在尝试可视化时出现解析错误:
Error: Request to Elasticsearch failed:
{"error":"SearchPhaseExecutionException[Failed to execute phase [query],
all shards failed; shardFailures
如何在 Kibana 中逐步创建带条件的脚本化字段?
您看到的不是解析错误,shardFailures
只是意味着底层 Elasticsearch 还没有准备好。启动 Kibana/Elasticsearch 时,请确保您的 ES 集群在进入 Kibana 之前已准备就绪,即 运行 curl -XGET localhost:9200/_cluster/health
并且在响应中,您应该会看到类似以下内容:
{
cluster_name: your_cluster_name
status: yellow <----- this must be either yellow or green
timed_out: false
number_of_nodes: 2
number_of_data_nodes: 2
active_primary_shards: 227
active_shards: 454
relocating_shards: 0 <----- this must be 0
initializing_shards: 0 <----- this must be 0
unassigned_shards: 25
}
至于你的脚本,它写得正确,但是你提到的条件不正确,因为你想要y <> 0
而不是x > 0
,所以应该是
doc['y'].value != 0 ? doc['x'].value / doc['y'].value : doc['x'].value
请试一试
我正在使用 Kibana 4,我的文档包含两个整数字段,分别称为:'x' 和 'y'。我想在 Kibana 中创建一个脚本字段 return 将 'x' 的除法值 'y' 如果 'y'<> 0。否则:return 值'x'.
我已尝试将此脚本添加到新的屏幕代码继承字段:
doc['x'].value > 0 ? doc['x'].value/doc['y'].value : doc['x'].value;
但在尝试可视化时出现解析错误:
Error: Request to Elasticsearch failed: {"error":"SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures
如何在 Kibana 中逐步创建带条件的脚本化字段?
您看到的不是解析错误,shardFailures
只是意味着底层 Elasticsearch 还没有准备好。启动 Kibana/Elasticsearch 时,请确保您的 ES 集群在进入 Kibana 之前已准备就绪,即 运行 curl -XGET localhost:9200/_cluster/health
并且在响应中,您应该会看到类似以下内容:
{
cluster_name: your_cluster_name
status: yellow <----- this must be either yellow or green
timed_out: false
number_of_nodes: 2
number_of_data_nodes: 2
active_primary_shards: 227
active_shards: 454
relocating_shards: 0 <----- this must be 0
initializing_shards: 0 <----- this must be 0
unassigned_shards: 25
}
至于你的脚本,它写得正确,但是你提到的条件不正确,因为你想要y <> 0
而不是x > 0
,所以应该是
doc['y'].value != 0 ? doc['x'].value / doc['y'].value : doc['x'].value
请试一试