Kibana:如何在 Kibana 中禁止查询中使用前置通配符查询
2021年1月9日 | by mebius
Kibana 搜索模块涵盖的一项搜索功能是可以在搜索中使用通配符。 但是通配符是要运行的极其昂贵的查询,尤其是前置通配符。 因此,你可能要考虑禁用前导通配符,以避免有人使用它们。在我之前的文章 “Elasticsearch:正确使用 regexp 搜索” 中,我已经详述tgcode了避免使用前置通配符查询。具体来说就是如下类型的查询:
GET my_example/_search
{
"query": {
"regexp": {
"content": ".*work"
}
}
}
这样的查询在 Elasticsarch 中非常昂贵,一方面是 regexp 搜索本来就慢,代价很高,加之前置通配符查询,这样可能使得你的 Elasticsearch 非常繁忙 (如果你的数据量很大的情况下)。对于很多用户来说,可能希望避免这里的查询。我们可以在 Kibana 中来禁止这类的查询。请记住,尽管 Kibana 是两种查询语言:KQL 和 Lucene,所以你需要同时禁用两者。
禁止 KQL 前置通配符查询
tgcode
我们首先打开 Kibana:
我们向下滚动屏幕:
针对 KQL 的搜索,我们点击上面的开关来禁止这项功能。一旦禁止后,我们来做一个实验。我们在 Kibana 中创建如下的一个 my_index:
PUT my_index/_doc/1
{
"category": "sports"
}
我们接着为 my_index 创建 index pattern,并在 Discover 中进行搜索:
在上面,我们看到了 my_index 的唯一文档。我们尝试如下的几个搜索:
显然 wildcard 的搜索是成功的。我们接着使用前置 willdcard 来进行搜索:
我们看到错误的信息,表明我的设置是起作用的。
文章来源于互联网:Kibana:如何在 Kibana 中禁止查询中使用前置通配符查询
相关推荐: Elastic:配置 Elasticsearch 服务器 logs
当我们运行 Elasticsearch 集群时,我们可以看到一些 Elasticsearch 的日志,比如我们可以在如下的目录中找到相应的一些 server 日志: .log _server.json 假如我在 config/eleasticsearch.ym…