簡體   English   中英

通過CIDR進行Elasticsearch過濾查詢

[英]Elasticsearch Filter Query by CIDR

例如,您將如何構建一個Elasticsearch查詢,該查詢被包含與192.168.100.14/24匹配的ip字段的文檔過濾?

{
    query: {
        filtered: {
            filter: {
                ???
            }
        }
    }
}

為了明確起見,我正在搜索的文檔具有被索引為IP字段的屬性,並且我想查找所有IP匹配CIDR掩碼(將在過濾器中指定)的文檔。

如果使用ES 2.2或更高版本,請嘗試以下操作:

{"query": {"term" : {"<ip_field_name>" : "192.168.100.14/24"}}}

elasticsearch類型ip不支持該類型的輸入。 這是顯示失敗的示例:

輸入

PUT index1
{
  "mappings": {
    "type1": {
      "properties": {
        "ip_addr": {
          "type": "ip"
        }
      }
    }
  }
}


POST index1/type1
{
  ip_addr: "192.168.100.14/24"
}

結果

{
   "error": {
      "root_cause": [
         {
            "type": "mapper_parsing_exception",
            "reason": "failed to parse [ip_addr]"
         }
      ],
      "type": "mapper_parsing_exception",
      "reason": "failed to parse [ip_addr]",
      "caused_by": {
         "type": "illegal_argument_exception",
         "reason": "failed to parse ip [192.168.100.14/24], not a valid ip address"
      }
   },
   "status": 400
}

相反,如果去除/24 ,它將正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM