Kibana 查询带有 4 位数字的句子(具有特定顺序的单词)
Kibana query for sentence (words with specific order) with 4 digit number
我是 Elasticsearch 的新手,想在 message
字段
中找到下面的句子
completed in ???? ms
在哪里????是数字
我现在有这个
{
"query": {
"query_string": {
"analyze_wildcard": true,
"default_field": "*",
"query": "(message:completed) AND (message:in) AND (message:/[0-9]{4}/) AND (message:ms)"
}
}
}
但问题是结果中还包含我不感兴趣的此类消息
如何指定匹配词的顺序?
提前致谢
我也试过这个,但没有成功:
{
"query": {
"regexp": {
"message": {
"value": "completed in [0-9]{4} ms"
}
}
}
}
正则表达式适用于分析的术语,正则表达式作为短语将不起作用
您可以使用 span query 来实现相同的目的。就性能而言,更好的选择是在索引时处理这个问题,可能会创建一个结构化日志,其中要查询的子文本是一个单独的字段
{
"query": {
"span_near": {
"clauses": [
{
"span_term": {
"message": {
"value": "job"
}
}
},
{
"span_term": {
"message": {
"value": "completed"
}
}
},
{
"span_term": {
"message": {
"value": "in"
}
}
},
{
"span_multi": {
"match": {
"regexp": {
"message": "[0-9]{4}"
}
}
}
},
{
"span_term": {
"message": {
"value": "ms"
}
}
}
],
"slop": 0,
"in_order": true
}
}
}
我是 Elasticsearch 的新手,想在 message
字段
completed in ???? ms
在哪里????是数字
我现在有这个
{
"query": {
"query_string": {
"analyze_wildcard": true,
"default_field": "*",
"query": "(message:completed) AND (message:in) AND (message:/[0-9]{4}/) AND (message:ms)"
}
}
}
但问题是结果中还包含我不感兴趣的此类消息
如何指定匹配词的顺序?
提前致谢
我也试过这个,但没有成功:
{
"query": {
"regexp": {
"message": {
"value": "completed in [0-9]{4} ms"
}
}
}
}
正则表达式适用于分析的术语,正则表达式作为短语将不起作用 您可以使用 span query 来实现相同的目的。就性能而言,更好的选择是在索引时处理这个问题,可能会创建一个结构化日志,其中要查询的子文本是一个单独的字段
{
"query": {
"span_near": {
"clauses": [
{
"span_term": {
"message": {
"value": "job"
}
}
},
{
"span_term": {
"message": {
"value": "completed"
}
}
},
{
"span_term": {
"message": {
"value": "in"
}
}
},
{
"span_multi": {
"match": {
"regexp": {
"message": "[0-9]{4}"
}
}
}
},
{
"span_term": {
"message": {
"value": "ms"
}
}
}
],
"slop": 0,
"in_order": true
}
}
}