【发布时间】:2019-06-18 12:48:47
【问题描述】:
我很难在 Kibana/Elasticsearch 6.5.4 版中使用正则表达式模式。我正在搜索的字段具有以下映射:
"field": {
"type": "text",
"analyzer": "custom_analyzer"
},
当直接向 elasticsearch 请求时,此字段中的正则表达式搜索会返回多个命中:
GET /my_index/_search
{
"query": {
"regexp":{
"field": "abc[0-9]{4}"
}
}
}
另一方面,在 Kibana 的发现/仪表板页面中,以下所有查询都返回空:
原始查询 - field:/abc[0-9]{4}/
转接查询 - field:/abc\[0\-9\]\{4\}/
绝望的询问 - field:/.*/
检查 kibana 对 elasticsearch 的请求会发现以下查询:
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "field:/abc[0-9]{4}/",
"analyze_wildcard": true,
"default_field": "*"
}
}
我希望 kibana 能够理解双正斜杠语法 /my_query/ 并进行“正则表达式查询”而不是“查询字符串”。我已经尝试过使用两种查询语言:“lucene”、“kuery”以及启用/禁用可选的“实验查询功能”。
进一步挖掘我发现this old issue,它说弹性只在now deprecated _all field 中运行正则表达式。如果这仍然成立,我不确定正则表达式在 kibana/elastic 6.X 中是如何工作的。
我错过了什么?任何帮助澄清在 Kibana 中使用正则表达式的条件将不胜感激
本主题中的所有其他堆栈问题要么是老问题,要么与语法问题和/或缺乏对分析器如何处理空格的理解有关,并且没有为我提供任何帮助。
【问题讨论】:
-
遇到同样的问题。你找到解决办法了吗?
标签: regex elasticsearch kibana