kibana中的脚本字段出错

时间:2016-06-14 13:06:54

标签: elasticsearch kibana

我有一个字符串字段,' somekey'在我的数据中,我正在尝试根据它的值在Kibana中生成一个数字脚本字段。这是我正在使用的:

doc['somekey'].value == "some-value" ? 0 : 1

但是我收到以下错误:

Error: Request to Elasticsearch failed: 
{"error":"SearchPhaseExecutionException[Failed to execute phase [query], all 
shards failed; shardFailures {[lHSDLA_dRhGNHsfke75-kg][testindex][0]: 
SearchParseException[[testindex][0]: 
query[ConstantScore(BooleanFilter(+cache(feed_ts:[1464719400000 TO 
1467311399999])))],from[-1],size[0]: Parse Failure [Failed to parse source 
[{\"size\":0,\"query\":{\"filtered\":{\"query\":{\"query_string
\":{\"analyze_wildcard\":true,\"query\":\"*\",\"lowercase_expanded_terms
\":false}},\"filter\":{\"bool\":{\"must\":[{\"range\":{\"feed_ts\":{\"gte
\":1464719400000,\"lte\":1467311399999}}}],\"must_not\":[]}}}},\"aggs\":{\"3
\":{\"histogram\":{\"field\":\"story_age\",\"interval\":1},\"aggs\":{\"4
\":{\"filters\":{\"filters\":{\"vend_position : 1\":{\"query\":{\"query_string
\":{\"analyze_wildcard\":true,\"query\":\"vend_position : 
1\",\"lowercase_expanded_terms\":false}}}}},\"aggs\":{\"2\":{\"sum\":{\"script
\":\"doc['somekey'].value == \\\"some-value\\\" ? 0 : 1\",\"lang\":\"expression
\"}}}}}}}}]]]; nested: ExpressionScriptCompilationException[Failed to parse 
expression: doc['somekey'].value == \"some-value\" ? 0 : 1]; nested: 
ParseException[ unexpected character '\"' at position (27).]; nested: 
NoViableAltException; }]"}

如果表达式无效 - 为什么,还有其他方法可以实现上面条件表达式在kibana中的作用吗?

1 个答案:

答案 0 :(得分:1)

自从Groovy脚本被认为不安全以来,Kibana中的

Scripted field使用了Lucene expression scripts

Lucene expression scripts只允许指定数字表达式,而"some-value"之类的字符串不允许,因此您需要在索引时实际创建其他字段。您也可以使用update by query plugin

执行此操作