gpt4 book ai didi

python - 从 Kibana 获取 elasticsearch 查询

转载 作者:太空宇宙 更新时间:2023-11-03 17:35:49 25 4
gpt4 key购买 nike

我想将以下 kibbana elasticsearch 查询转换为 elasticsearch.count(index=indices, body=query) 中的查询。

目标是获取给定时间戳(过去 24 小时)、簇和整数字段 > 0 的计数。

  • 时间戳:日期类型
  • 簇:字符串
  • 整数字段:长整型(值大多是更大的整数)

查询(从 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 中提取它们时,您需要查找“已过滤”的查询部分。从那里,您可以删除通配符条件。

{
"query": {
"filtered": {
"filter": {
"bool" : {
"must" : [
{
"term" : {
"cluster" : "YYYY"
}
},
{
"range" : {
"integer_field" : {
"gt" : 0
}
}
},
{
"range" : {
"@timestamp" : {
"gt" : "now - 24h"
}
}
}
]
}
}
}
}
}

“cluster”term 过滤器是唯一可能对您的使用“无效”的过滤器。 term 过滤器与索引值完全匹配,因此如果它不是字面意义上的“YYYY”(例如“yyyy”),则它将不匹配。您可能希望 { "term": { ... } } 为:

{
"fquery" : {
"query" : {
"match" : {
"cluster" : "YYYY"
}
}
}
}

关于python - 从 Kibana 获取 elasticsearch 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com