Elasticsearch Kibana使用基础EQL查询含指定字符串事件的问题
解决Kibana安全规则EQL查询text字段的报错问题
报错原因
你用的like和: 都是精确匹配语法,但myField是text类型——这类字段默认不支持精确匹配操作,所以触发了提示,要么给字段加keyword多字段,要么改用全文匹配的MATCH/QUERY语法。
快速解决方案(不用改索引)
直接换用EQL支持的全文匹配语句,两种方式选一个就行:
- 使用MATCH关键字(基于text字段的分词匹配包含"My text"的事件):
any where myField MATCH "My text" - 使用QUERY关键字(精准匹配包含完整"My text"字符串的事件):
any where QUERY('myField:*"My text"*')
永久解决方案(适配后续精确匹配需求)
如果之后经常要对myField做精确匹配,就给字段加个keyword子字段:
- 打开Kibana的Dev Tools,执行下面的命令更新索引mapping(把
your_index_name换成你的实际索引名):PUT /your_index_name/_mapping { "properties": { "myField": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } - 旧数据需要重新索引才会生效,新数据会自动适配这个字段
- 之后就能用你原来的语法查询了:
或者any where myField.keyword like "My text"any where myField.keyword : "My text"
内容的提问来源于stack exchange,提问作者pumpkinzzz
相关产品推荐
相关产品推荐

