gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:57:26 25 4
gpt4 key购买 nike

我正在使用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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com