Kibana 中的正则表达式问题
Issues with regex in Kibana
我很难在 Kibana/Elasticsearch 版本 6.5.4 中使用正则表达式模式。我正在搜索的字段具有以下映射:
"field": {
"type": "text",
"analyzer": "custom_analyzer"
},
正则表达式在该字段中搜索 return 请求直接到 elasticsearch 时有几次命中:
GET /my_index/_search
{
"query": {
"regexp":{
"field": "abc[0-9]{4}"
}
}
}
另一方面,在 Kibana 的 discover/dashboard 页面中,return 以下的所有查询都是空的:
原始查询 - 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/
并进行“正则表达式查询”而不是“query_string”。我已经尝试使用两种查询语言:"lucene"、"kuery" 和可选的 "experimental query features" enabled/disabled.
进一步挖掘我发现 this old issue which says that elastic only runs regex into the now deprecated _all field。如果这仍然成立,我不确定 kibana/elastic 6.X.
中的正则表达式如何工作
我错过了什么?如果您能帮助阐明在 Kibana 中使用正则表达式的条件,我们将不胜感激
这个主题中的所有其他堆栈问题要么是旧的,要么与语法问题有关and/or缺乏对分析器如何处理空格的理解,没有为我提供任何帮助。
因此,关于如何使 Lucene 在 Kibana 中使用 Regexp 搜索,我并没有确切的答案。但我在 Kibana 中找到了一种方法。
解决方案是使用具有自定义 DSL 的过滤器
这是一个示例,说明要在查询中输入什么 JSON -
{
"regexp": {
"req.url.keyword": "/question/[0-9]+/answer"
}
}
示例 Url 我的数据中有 - /questions/432142/answer
除此之外,您可以使用 Kibana 搜索(Lucene 语法)编写更多过滤器
它进行适当的搜索,没有转义问题或任何类似的事情。
希望对您有所帮助。
确保 Kibana 没有打开右上角的查询功能。
我很难在 Kibana/Elasticsearch 版本 6.5.4 中使用正则表达式模式。我正在搜索的字段具有以下映射:
"field": {
"type": "text",
"analyzer": "custom_analyzer"
},
正则表达式在该字段中搜索 return 请求直接到 elasticsearch 时有几次命中:
GET /my_index/_search
{
"query": {
"regexp":{
"field": "abc[0-9]{4}"
}
}
}
另一方面,在 Kibana 的 discover/dashboard 页面中,return 以下的所有查询都是空的:
原始查询 - 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/
并进行“正则表达式查询”而不是“query_string”。我已经尝试使用两种查询语言:"lucene"、"kuery" 和可选的 "experimental query features" enabled/disabled.
进一步挖掘我发现 this old issue which says that elastic only runs regex into the now deprecated _all field。如果这仍然成立,我不确定 kibana/elastic 6.X.
中的正则表达式如何工作我错过了什么?如果您能帮助阐明在 Kibana 中使用正则表达式的条件,我们将不胜感激
这个主题中的所有其他堆栈问题要么是旧的,要么与语法问题有关and/or缺乏对分析器如何处理空格的理解,没有为我提供任何帮助。
因此,关于如何使 Lucene 在 Kibana 中使用 Regexp 搜索,我并没有确切的答案。但我在 Kibana 中找到了一种方法。
解决方案是使用具有自定义 DSL 的过滤器
这是一个示例,说明要在查询中输入什么 JSON -
{
"regexp": {
"req.url.keyword": "/question/[0-9]+/answer"
}
}
示例 Url 我的数据中有 - /questions/432142/answer
除此之外,您可以使用 Kibana 搜索(Lucene 语法)编写更多过滤器
它进行适当的搜索,没有转义问题或任何类似的事情。
希望对您有所帮助。
确保 Kibana 没有打开右上角的查询功能。