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:

%title插图%num

%title插图%num

我们向下滚动屏幕:

%title插图%num

针对 KQL 的搜索,我们点击上面的开关来禁止这项功能。一旦禁止后,我们来做一个实验。我们在 Kibana 中创建如下的一个 my_index:

PUT my_index/_doc/1
{
  "category": "sports"
}

tgcode

我们接着为 my_index 创建 index pattern,并在 Discover 中进行搜索:

%title插图%num

在上面,我们看到了 my_index 的唯一文档。我们尝试如下的几个搜索:

%title插图%num

显然 wildcard 的搜索是成功的。我们接着使用前置 willdcard 来进行搜索:

%title插图%num

%title插图%num

我们看到错误的信息,表明我的设置是起作用的。

文章来源于互联网:Kibana:如何在 Kibana 中禁止查询中使用前置通配符查询

相关推荐: Elastic:配置 Elasticsearch 服务器 logs

当我们运行 Elasticsearch 集群时,我们可以看到一些 Elasticsearch 的日志,比如我们可以在如下的目录中找到相应的一些 server 日志: .log _server.json 假如我在 config/eleasticsearch.ym…

Tags: ,