query语法

一、DSL方式的query语法

查询常用的关键字如下:

1 query (基于文档相关性的全文搜索)

term:精确匹配,不会对查询词进行分析。下面的示例返回message="loadUserByUsername error"的文档。

GET xxx/_search
{
  "query": {
    "term": {
      "message.keyword": {
        "value": "loadUserByUsername error"
      }
    }
  }
}

match:首先会对查询词进行分析,然后再匹配。下面的示例返回message中含有"filter" 或者 "error"的所有文档。

GET xxx/_search
{
  "query": {
    "match": {
      "message": "filter error"
    }
  }
}

match_phrase:被查询词作为一个短语,不会将查询短语拆开。下面的示例返回message="filter error"的文档。

GET xxx/_search
{
  "query": {
    "match_phrase": {
      "message": "filter error"
    }
  }
}

match_phrase_prefix:查询短语前缀匹配,它与match_phrase的区别在于,它可以匹配"查询短语+其它内容"的内容。

GET xxx/_search
{
  "query": {
    "match_phrase_prefix": {
      "message": "loadUser"
    }
  },
  "_source": ["message", "@timestamp"],
  "from": 0
}

 

bool:结合其它真值查询,通常和must\should\must_not(与或非)一起组合出复杂的查询。

must:与的关系,表示必须同时满足must下的所有条件。

GET xxx/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "message": "eureka"
          }
        },
        {
          "match": {
            "message": "via"
          }
        }
      ]
    }
  }
}

should:或的关系,表示满足should下的任意一个条件即可。

GET xxx/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "message": "filter"
          }
        },
        {
          "match": {
            "message": "error"
          }
        }
      ]
    }
  }
}

must_not:非的关系,表示必须同时不满足must_not下的所有条件才行。

GET xxx/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "message": "filter"
          }
        },
        {
          "match": {
            "message": "error"
          }
        }
      ]
    }
  }
}
2 sort  根据某个字段排序 
GET xxx/_search
{
  "query": {
    "match": {
      "message": "error"
    }
  },
  "sort": [
    {
      "@timestamp": {
        "order": "desc"
      }
    }
  ]
}
3 _source 

指定查询结果中展示的字段。  "_source": ["a", "b"]

GET xxx/_search
{
  "query": {
    "match": {
      "message": "error"
    }
  },
  "sort": [
    {
      "@timestamp": {
        "order": "desc"
      }
    }
  ],
  "_source": ["message", "@timestamp"]
}
4 size 

指定检索结果输出的条数,不设定时默认为10。   "size": 20

GET xxx/_search
{
  "query": {
    "match": {
      "message": "error"
    }
  },
  "_source": ["message", "@timestamp"],
  "size": 20
}
5 from 

以一定的偏移量来检索我们的数据,缺省时默认为0(从检索的第一条数据开始)。"from": 10

GET xxx/_search
{
  "query": {
    "match": {
      "message": "error"
    }
  },
  "_source": ["message", "@timestamp"],
  "from": 100
}

二、filter过滤

不需要计算相关度分数,搜索效率高。

range:范围查询,通过一定范围的值来过滤文档。

GET xxx/_search
{
  "query": {
    "bool": {
      "filter": {
        "range": {
          "@timestamp": {
            "gte": "2019-09-11T05:20:36.622Z",
            "lte": "2019-09-11T05:24:36.622Z"
          }
        }
      }
    }
  }
}

exists:匹配那些指定字段中至少包含一个非null值的文档。 Returns documents that have at least one non-null value in the original field。

GET xxx/_search
{
  "query": {
    "bool": {
      "filter": {
        "exists": {
          "field": "@timestamp"
        }
      }
    }
  }
}

转载于:https://www.cnblogs.com/mydesky2012/p/11469767.html

Grafana是一款用于数据可视化的开源工具,可以连接各种数据源,并通过查询语句获取数据并展示在仪表盘上。Grafana支持多种数据源,包括Graphite、InfluxDB、Prometheus等。 在Grafana中使用的查询语法主要取决于所选择的数据源。以InfluxDB为例,Grafana使用InfluxQL作为查询语言。以下是一些常用的查询语法: 1. 查询测量值: SELECT * FROM <measurement> WHERE <condition> `<measurement>`:测量值的名称。 `<condition>`:可选的过滤条件,用于筛选数据。 2. 聚合函数: SELECT <aggregation_function>(<field_key>) FROM <measurement> WHERE <condition> GROUP BY <time_interval> `<aggregation_function>`:聚合函数,例如mean、sum、count等。 `<field_key>`:需要聚合的字段。 `<time_interval>`:数据点的时间间隔。 3. 时间范围过滤: SELECT * FROM <measurement> WHERE time >= <start_time> AND time <= <end_time> `<start_time>`和`<end_time>`:指定的时间范围。 4. 数据点限制: SELECT * FROM <measurement> LIMIT <limit_number> `<limit_number>`:需要返回的数据点个数。 在Grafana中,可以根据需要自定义查询语句,通过配置Datasource和Panel来展示查询结果。可以通过Grafana提供的简单方式(如查询构建器)或直接手动编写查询语句。 总之,Grafana的查询语法可以根据所选数据源的不同而有所变化,但通常可以通过选择测量值、添加过滤条件、使用聚合函数和设定时间范围来构建查询语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值