用于查询主机名的 Elasticsearch 脚本
Elasticsearch script to query hostnames
我想创建一个脚本,该脚本将查询多个主机名,如果它不在索引中则提供未找到的结果,如果找到则提供服务器上的主机和文档数。到目前为止我所拥有的似乎有效,但我不确定如何让它查询多个服务器并提供正确的结果。任何帮助将不胜感激。
GET /index1*/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": "now-7d",
"lt": "now"
}
}
},
{
"term": {
"host.name": "server1"
}
}
]
}
},
"aggregations": {
"hosts": {
"composite": {
"size": 1000,
"sources": [
{
"hostname": {
"terms": {
"field": "host.name"
}
}
}
]
}
}
},
"size": 0
到目前为止开端不错!您可以简单地将 term
查询更改为 terms
查询。此外,您需要利用 missing bucket 功能来获取未找到的结果:
GET /index1*/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": "now-7d",
"lt": "now"
}
}
},
{
"terms": {
"host.name": ["server1", "server2", "server3"]
}
}
]
}
},
"aggregations": {
"hosts": {
"composite": {
"size": 1000,
"sources": [
{
"hostname": {
"terms": {
"field": "host.name",
"missing_bucket": true,
"missing_order": "last"
}
}
}
]
}
}
},
"size": 0
}
所有在给定时间间隔内有文档的服务器都会有桶,所有其他服务器都在“空”桶中。
我想创建一个脚本,该脚本将查询多个主机名,如果它不在索引中则提供未找到的结果,如果找到则提供服务器上的主机和文档数。到目前为止我所拥有的似乎有效,但我不确定如何让它查询多个服务器并提供正确的结果。任何帮助将不胜感激。
GET /index1*/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": "now-7d",
"lt": "now"
}
}
},
{
"term": {
"host.name": "server1"
}
}
]
}
},
"aggregations": {
"hosts": {
"composite": {
"size": 1000,
"sources": [
{
"hostname": {
"terms": {
"field": "host.name"
}
}
}
]
}
}
},
"size": 0
到目前为止开端不错!您可以简单地将 term
查询更改为 terms
查询。此外,您需要利用 missing bucket 功能来获取未找到的结果:
GET /index1*/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": "now-7d",
"lt": "now"
}
}
},
{
"terms": {
"host.name": ["server1", "server2", "server3"]
}
}
]
}
},
"aggregations": {
"hosts": {
"composite": {
"size": 1000,
"sources": [
{
"hostname": {
"terms": {
"field": "host.name",
"missing_bucket": true,
"missing_order": "last"
}
}
}
]
}
}
},
"size": 0
}
所有在给定时间间隔内有文档的服务器都会有桶,所有其他服务器都在“空”桶中。