【问题标题】:Elasticsearch query using of Must and must not使用 Must 和 Must not 的 Elasticsearch 查询
【发布时间】:2022-01-20 20:49:27
【问题描述】:

在 ES 查询中我有 IP 字段,现在我想排除一些 IP 的系列。 应排除的ip系列:192.168.0.0/16

这里正在尝试查询,但我遇到了错误。

 {
 "size": 0,
 "query": {
  "bool": {
  "filter": [
    {
          "match_all": {
            
          }
        },
    {
      "range": {
        "timestamp": {
          "gte": "now-1y",
          "lte": "now",
          "format": "epoch_millis"
        }
      }
    }
  ],
  "must_not": {
   "match":{
     "ip_address":"192.168*"
   }
  }
 }
 }
 }

错误: 未能创建查询:'192.168*' 不是 IP 字符串文字

还有什么方法可以排除这个IP系列?

【问题讨论】:

    标签: elasticsearch filter esquery


    【解决方案1】:

    您可以使用范围查询来排除IP地址在192.168.*范围内的所有文档

    {
      "query": {
        "bool": {
          "filter": [
            {
              "match_all": {}
            },
            {
              "range": {
                "timestamp": {
                  "gte": "now-1y",
                  "lte": "now",
                  "format": "epoch_millis"
                }
              }
            }
          ],
          "must_not": {
            "range": {
              "ip_addr": {
                "gte": "192.168.0.0",
                "lt": "192.168.255.255"
              }
            }
          }
        }
      }
    }
    

    更新 1:

    您可以在 must_not 块内使用多个范围查询,以排除多个 IP 地址范围

    {
      "query": {
        "bool": {
          "filter": [
            {
              "match_all": {}
            }
          ],
          "must_not": [
            {
              "range": {
                "ip_addr": {
                  "gte": "192.168.0.0",
                  "lt": "192.168.255.255"
                }
              }
            },
            {
              "range": {
                "ip_addr": {
                  "gte": "10.0.0.0",
                  "lt": "10.255.255.255"
                }
              }
            }
          ]
        }
      }
    }
    

    【讨论】:

    • 感谢 ESCoder,我们可以在其中添加多个 IP 范围吗?喜欢加10.0.0.0
    • @mkail 你想在范围查询中包含10.0.0.0 吗?
    • 是的,想在查询中包含这个范围
    • 你能帮忙吗?想要添加多个 IP 范围。
    • @mkail 已经很久了!如果它帮助您解决了您的问题,您能否接受并投票赞成答案。 TIA ;-)
    猜你喜欢
    • 2016-06-06
    • 1970-01-01
    • 2015-04-30
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    相关资源
    最近更新 更多