elasticsearch - 使用通配符过滤掉记录

标签 elasticsearch kibana

我正在使用ElasticSearch + Kibana记录错误。在Kibana仪表板中,我可以通过单击带有减号的放大镜来按特定字段过滤记录。然后,它生成以下查询以排除:

{
  "query": {
    "match": {
      "message": {
        "query": "Invalid HTTP_HOST header: '12.34.567.89'. You may need to add '12.34.567.89' to ALLOWED_HOSTS.",
        "type": "phrase"
      }
    }
  }
}

现在,我想排除所有可能的IP地址的这些记录,因此我需要一个通配符(或regexp)。我找到了有关通配符和正则表达式here的文档。但是,它们与上面使用的语法不同。

如果我将上面的查询更改为文档中的查询,则根本不会对其进行过滤。例:
{
  "query": {
    "wildcard": {
      "message": "Invalid HTTP_HOST header: *"
    }
  }
}

如果我尝试将它们组合在一起,则会出现解析错误:Discover: [parsing_exception] [match] unknown token [START_OBJECT] after [query], with { line=1 col=444 }。例:
{
  "query": {
    "match": {
      "message": {
        "query": {
          "wildcard": {
            "message": "Invalid HTTP_HOST header: *"
          }
        },
        "type": "phrase"
      }
    }
  }
}

我尝试了更多的组合,但无法使用。有任何想法吗?

最佳答案

另一种可能性是像这样使用 regexp query,但是取决于您拥有的数据量,它将占用大量CPU:

POST _search
{
  "query": {
    "regexp": {
      "message.keyword": {"value":"Invalid HTTP_HOST header: '<1-999>\\.<1-999>\\.<1-999>\\.<1-999>'\\. You may need to add '<1-999>\\.<1-999>\\.<1-999>\\.<1-999>' to ALLOWED_HOSTS\\.",
      "flags": "ALL"}
    }
  }
}

您最好先对数据进行分析,然后再将其编入索引并将其分成更好的可搜索部分。

关于elasticsearch - 使用通配符过滤掉记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47553442/

相关文章:

elasticsearch - 如何将 ignore_unavailable 作为查询参数传递给 elasticsearch 搜索请求?

java - Elasticsearch Java API 术语聚合怪异

python - ElasticSearch:TypeError:预期的字符串还是缓冲区?

elasticsearch - Elasticsearch index文件夹应重命名并附加currentdate

elasticsearch - 在Kibana/ElasticSearch中搜索多个字段

elasticsearch - 在下一次索引轮换时更改 elasticsearch 索引的分片计数

elasticsearch - 意外的 Geo_shape 查询行为

elasticsearch - 使用Elasticsearch在Titan上进行有序遍历

elasticsearch - 带记录时间的ELK可视化

elasticsearch - 强制合并还是不强制合并,这是个问题