ATD文档中心 logo ATD文档中心

常用样例

特殊字符

*

模糊查找代表匹配0个或多个字符

?

模糊查找代表匹配1个字符

/

表示使用正则表达式

\

用于转义当前特殊字符

:

用于字段名和搜索值的分隔符

()

查找优先级关系

{}

范围查找表示开区间

[]

范围查找表示闭区间

>

算术比较大于

<

算术比较小于

~

使用编辑距离查找文档

+

表示过滤的文档一定出现,类似AND

-

表示过滤的文档一定不出现,类似NOT

注意事项

  1. 在使用正则方式进行匹配时,待匹配的值的类型不可以是数字类型(字段类型可通过数据管理=》索引管理查看)
  2. 在使用正则方式进行匹配时,不支持的匹配字符有^(以指定字符开头)和$(以指定字符结束)
  3. 编辑距离(Edit Distance)表达中~N在针对字符时,表示N个字符,N的默认值是2
  4. 对于查找接近符合指定单词组顺序的文档~N表示编辑距离为N的单词,和上述字符同理,只是对于单词来说,N表示完整单词的编辑距离
  5. 关键词ANDORNOT不可以使用小写
  6. 被查找的文档在查找时会自动忽略字符大小写

原理简介

高级搜索功能来源于kibana的数据探索(Discover),因此可以使用此功能实现访问与选定索引模式匹配的每个索引中的每个文档。 其基本原理是由输入内容拼接基于Elasticsearch的查询语句。例如查询原始日志中uri字段值为/a/b?uss的文档,则在输入框内输入url.path:”/a/b?uss”,而实际发送的请求方式是:

{
    "must":[
        {
            "query_string":{
                "query":"url.path:\"/a/b?uss\"",
                "default_field":"*",
                "analyze_wildcard":true
            }
        }
    ]
}

也即是把query_string请求中的query字段内容更换成搜索的内容,然后直接查询Elasticsearch中的文档。

官方文档

更多详细内容 https://www.elastic.co/guide/en/kibana/6.4/kuery-query.html https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-query-string-query.html