在查询服务中使用 ElasticSearch
查询 Elasticsearch / JSON查询风格
在示例图片中,查询脚本就是符合 Elasticsearch 要求的HTTP查询请求,具体的ES访问地址不需要填写。 实际运行时,会根据数据源的参数来计算ES的访问地址。
有2种方法可以获得查询脚本:
- 在Kibana中创建查询,然后COPY出来
- 参考:Elasticsearch Search API ,Search your data ,Query DSL
注意事项:
- 查询参数建议全部定义成 string 类型
示例图片中的查询脚本:
POST /oprlog-*/_search HTTP/1.1
Content-Type: application/json
{
"_source": {
"excludes": ["exAll", "oprDetails", "ctxData", "addition"]
},
"size": 100,
"sort": [
{ "startTime": { "order": "desc" } }
],
"query": {
"bool": {
"must": [],
"filter": [
{
"bool": {
"filter": [{
"bool": {
"filter": [
{ "bool": { "should": [ { "match_phrase": { "appName": "{appname}"} }], "minimum_should_match": 1} },
{ "bool": { "should": [ { "match": { "isSlow": 1 } }], "minimum_should_match": 1} }
]
}
}]
}
},
{
"range": {
"startTime": {
"gte": "{start}",
"lte": "{end}",
"format": "strict_date_optional_time"
}
}
}
]
}
}
}
说明:
- JSON查询的参数采用 {xxx} 的占位形式
- 如果需要查看 Elasticsearch 的原始响应,调用时请指定:x-result-format=raw
查询 Elasticsearch / SQL查询风格
也可以使用 SQL 语句来查询 Elasticsearch,例如:
示例图片中的查询脚本:
select startTime,appName,oprId,isSlow,hasError
from "oprlog-*"
where appName = @appName order by startTime desc limit 10
说明:
- ES的SQL查询是有限制的,可参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-limitations.html
- 如果需要查看 Elasticsearch 的原始响应,调用时请指定:x-result-format=raw