美文网首页elasticsearch
Elasticsearch查询语句语法

Elasticsearch查询语句语法

作者: Evelynzzz | 来源:发表于2017-08-28 12:17 被阅读558次

使用KIBANA查询ES中的数据

在搜索时,一定要选择合理的时间范围,这个时间范围是基于创建索引模式时选择的时间字段。比如@timestamp

另外一个小提示:默认情况下,搜索结果列表的上方会显示一个柱状图。可以点击左下角的小箭头,查看其他的信息,比如搜索结果对应的ES请求主体等。

Elasticsearch查询语句语法

查询语句包含一系列词语(term)和操作符。一个词语可以是一个单词,比如INFO
也可以是双引号包围的一个短语,比如"INFO make",这种情况下会搜索这整个短语,按照单词在短语中的顺序。

指定字段名称

默认情况下,会在所有字段中匹配要搜索的词语。或者我们也可以指定要搜索的字段。比如以下查询:

  • 查询message字段中包含INFO单词的记录:message:INFO
  • 查询message字段中包含INFO make短语的记录:message:"INFO make"
    在这个例子中,如果搜索message:"make INFO"就会提示未找到结果,因为message字段并不包含make INFO这个短语。(稍微注意搜索栏的输入内容和ES查询请求中语句的差别)
  • 查询message字段中包含testinform的记录:message:(test OR inform)
    如果省掉了OR,也就是message:(test inform),则使用设置的default_operator的值(其默认值为OR)。
  • 查询所有mes开头的字段中包含trust的记录:mes\*:trust*通配符前需要加反斜杠\
    这里有一个问题,搜索kafka.\*:trsutlog会报错,因为这里匹配的字段的数据类型,有字符串类型,数值类型,和未知类型。对于数值类型的字段,我们只能使用数字来搜索,使用字母等就会报错。所以kafka.\*:17432195就有结果了。
    再比如,当我们尝试查询beat.\*:5.1.2时就成功了,因为匹配的beat.hostnamebeat.version字段都是字符串类型的。
  • 查询message字段值非空的记录:_exists_:message

使用通配符

通配符搜索适用于单个单词中,使用替换单个字符,*替换零个或多个字符。比如:tags:trust* OR tes?的查询结果如下。注意这个查询中的tes?是用于匹配所有字段的内容。如果要限定tags字段,则应该查询tags:(trust* OR tes?)
另外,使用通配符查询是很占用内存的。

正则表达式

比如查询tags:/trust*/。具体正则表达式语法参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax

模糊操作符

可以搜索相似的词语,比如trsut~,同样会匹配trust

取值范围

范围可以是日期,数值,或者字符串字段的范围。闭区间:[min TO max];开区间:{min TO max};也可以结合在一起:[min TO max}

  • 日期:date:[2012-01-01 TO 2012-12-31]
  • 数值:count:[1 TO 5]
  • 字符串:tag:{alpha TO omega}
  • 不指定最小值或最大值:
    • count:[10 TO *],也可以写成count:>=10
    • date:{* TO 2012-12-31}: date在2012-12-31之前(这个我测试了,查不到预想的结果)

Boolean操作符

比如ERROR WARNING +INFO -DEBUG

  • WARNINGERROR可选,只是提高了相关性。
  • +INFO表示一定要包含INFO单词。
  • -DEBUG表示一定不能包含DEBUG单词。

如果使用ANDORNOT操作符(也写作&&||!),则可以转化成:

  • WARNING OR ERROR AND INFO AND NOT DEBUG
  • 不正确的转化:(WARNING OR ERROR) AND INFO AND NOT DEBUG。这种情况下,必须至少匹配WARNINGERROR中一个。

保留字符

如果要匹配保留字符,则需要在字符前加反斜杠\。保留字符包括: + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /。比如:要搜索(1+1)=2,则使用语句\(1\+1\)\=2
不过,<>是无法转义的,它们总是会创建一个范围查询。

参考链接

ES文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_ranges

星期六, 26. 八月 2017 05:58下午

相关文章

  • Elasticsearch查询语句语法

    使用KIBANA查询ES中的数据 在搜索时,一定要选择合理的时间范围,这个时间范围是基于创建索引模式时选择的时间字...

  • 避坑指南,Elasticsearch 分页查询的两个问题,你一定

    Elasticsearch 分页查询有个特点,如果你写一个这样的查询语句: Elasticsearch 会查询出前...

  • elasticsearch 查询语句

    elasticsearch 查询语句 1、简单查询 不带参数、分页、排序查询 带分页、字段筛选查询 2、复杂查询 ...

  • golang elasticsearch 查询教程 --- 20

    elasticsearch的查询语法比较丰富,下面分别介绍golang 的各种查询用法。 如果对ES的查询语法和概...

  • kibana 使用

    Discover 在查询框里,KQL您可以输入 Elasticsearch 查询语句[https://www.el...

  • union联合查询

    含义 将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union ... 应用场景...

  • ElasticSearch 查询语法

    1.查询集群的基本运行状况-health 2.集群的节点信息 3.集群 中的索引信息 4.根据id查询所需数据 5...

  • Elasticsearch查询语法

    查询语法 match all query define query number term query bool ...

  • MongoDB 查询文档

    语法MongoDB 查询数据的语法格式如下: 该语句是查询collection中全部数据,效果和关系型数据库的语句...

  • SQL常用语句大全

    1. 简单查询语句 1.1 查询全部: SELECT * FROM 表名称 ; 1.2 实际上简单查询语句语法格式...

网友评论

    本文标题:Elasticsearch查询语句语法

    本文链接:https://www.haomeiwen.com/subject/yanwdxtx.html