弹性搜索匹配多个 IP 子网 DSL 查询



我正在尝试在 Kibana 中为特定 URI 执行 DSL 查询过滤器,同时匹配多个 IP 子网。 到目前为止,我已经设法使其仅适用于一个 IP 子网:

{
"query": {
"bool": {
"must": [
{
"match": {
"uripath": "/specific-uri-path"
}
},
{
"match": {
"clientip": "10.0.0.0/8"
}
}
]
}
}
}

但是如果我尝试匹配多个子网,它会失败(可能是因为匹配只能包含不同的字段(:

{
"query": {
"bool": {
"must": [
{
"match": {
"uripath": "/specific-uri-path"
}
},
{
"match": {
"clientip": "10.0.0.0/8",
"match": {
"clientip": "14.0.0.0/8"
}
}
]
}
}
}

我能够使其与术语查询一起使用。这意味着我还可以为"clientip"使用一个值数组,所以总的来说它更干净。我希望它也能帮助其他人。

{
"query": {
"bool": {
"must": [
{
"match": {
"uripath.keyword": "/specific-uri-path"
}
},
{
"terms": {
"clientip": [
"10.0.0.0/8",
"14.0.0.0/8",
"20.0.0.0/8"
]
}
}
]
}
}
}

最新更新