我有一个字符串字段,' 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中的作用吗?
答案 0 :(得分:1)
Scripted field使用了Lucene expression scripts。
Lucene expression scripts只允许指定数字表达式,而"some-value"
之类的字符串不允许,因此您需要在索引时实际创建其他字段。您也可以使用update by query plugin