从 Kibana 获取 elasticsearch 查询
Obtaining an elasticsearch query from Kibana
我想将以下 kibbana elasticsearch 查询转换为 elasticsearch.count(index=indices, body=query)
中的查询。
目标是获取给定时间戳(过去 24 小时)、集群和 integer_field > 0 的计数。
- 时间戳:日期类型
- 集群:字符串
- integer_field:长(值
大多是更大的整数)
正在查询(从 Kibana 获得)
curl -XGET 'some-url:9200/logstash-2015.07.03,logstash-2015.07.02/_search?pretty' -d '{
"facets": {
"0": {
"date_histogram": {
"field": "@timestamp",
"interval": "10m"
},
"global": true,
"facet_filter": {
"fquery": {
"query": {
"filtered": {
"query": {
"query_string": {
"query": "*"
}
},
"filter": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"from": 1435840604940,
"to": 1435927004940
}
}
},
{
"fquery": {
"query": {
"query_string": {
"query": "integer_field:(>0)"
}
},
"_cache": true
}
},
{
"fquery": {
"query": {
"query_string": {
"query": "cluster:(\"YYY\")"
}
},
"_cache": true
}
}
]
}
}
}
}
}
}
}
},
"size": 0
}'
我已经写了其他案例的查询。只有这种情况,我被困住了。帮助将不胜感激。
您正在寻找的查询比 Kibana 强制自动生成的查询更简单。一般来说,从 Kibana 中拉取它们时,您要查找 "filtered" 查询部分。从那里,您可以删除通配符条件。
{
"query": {
"filtered": {
"filter": {
"bool" : {
"must" : [
{
"term" : {
"cluster" : "YYYY"
}
},
{
"range" : {
"integer_field" : {
"gt" : 0
}
}
},
{
"range" : {
"@timestamp" : {
"gt" : "now - 24h"
}
}
}
]
}
}
}
}
}
"cluster" term
过滤器是唯一一个可能 "valid" 不供您使用的过滤器。 term
过滤器与索引值 完全 匹配,因此如果它不是字面上的 "YYYY"(例如,"yyyy"),那么它将不匹配.您可能希望 { "term": { ... } }
为:
{
"fquery" : {
"query" : {
"match" : {
"cluster" : "YYYY"
}
}
}
}
我想将以下 kibbana elasticsearch 查询转换为 elasticsearch.count(index=indices, body=query)
中的查询。
目标是获取给定时间戳(过去 24 小时)、集群和 integer_field > 0 的计数。
- 时间戳:日期类型
- 集群:字符串
- integer_field:长(值 大多是更大的整数)
正在查询(从 Kibana 获得)
curl -XGET 'some-url:9200/logstash-2015.07.03,logstash-2015.07.02/_search?pretty' -d '{
"facets": {
"0": {
"date_histogram": {
"field": "@timestamp",
"interval": "10m"
},
"global": true,
"facet_filter": {
"fquery": {
"query": {
"filtered": {
"query": {
"query_string": {
"query": "*"
}
},
"filter": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"from": 1435840604940,
"to": 1435927004940
}
}
},
{
"fquery": {
"query": {
"query_string": {
"query": "integer_field:(>0)"
}
},
"_cache": true
}
},
{
"fquery": {
"query": {
"query_string": {
"query": "cluster:(\"YYY\")"
}
},
"_cache": true
}
}
]
}
}
}
}
}
}
}
},
"size": 0
}'
我已经写了其他案例的查询。只有这种情况,我被困住了。帮助将不胜感激。
您正在寻找的查询比 Kibana 强制自动生成的查询更简单。一般来说,从 Kibana 中拉取它们时,您要查找 "filtered" 查询部分。从那里,您可以删除通配符条件。
{
"query": {
"filtered": {
"filter": {
"bool" : {
"must" : [
{
"term" : {
"cluster" : "YYYY"
}
},
{
"range" : {
"integer_field" : {
"gt" : 0
}
}
},
{
"range" : {
"@timestamp" : {
"gt" : "now - 24h"
}
}
}
]
}
}
}
}
}
"cluster" term
过滤器是唯一一个可能 "valid" 不供您使用的过滤器。 term
过滤器与索引值 完全 匹配,因此如果它不是字面上的 "YYYY"(例如,"yyyy"),那么它将不匹配.您可能希望 { "term": { ... } }
为:
{
"fquery" : {
"query" : {
"match" : {
"cluster" : "YYYY"
}
}
}
}