例如,如何構建一個由包含匹配192.168.100.14/24
的ip
字段的文檔過濾的Elasticsearch查詢?Elasticsearch按CIDR篩選查詢
{
query: {
filtered: {
filter: {
???
}
}
}
}
爲了澄清,我正在尋找有被索引作爲IP領域的屬性的文件,我想找到有匹配的CIDR掩碼(在過濾器中指定的IP)的所有文件。
例如,如何構建一個由包含匹配192.168.100.14/24
的ip
字段的文檔過濾的Elasticsearch查詢?Elasticsearch按CIDR篩選查詢
{
query: {
filtered: {
filter: {
???
}
}
}
}
爲了澄清,我正在尋找有被索引作爲IP領域的屬性的文件,我想找到有匹配的CIDR掩碼(在過濾器中指定的IP)的所有文件。
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
它將正常工作。
試試這個,如果使用ES 2.2或更高版本:
{"query": {"term" : {"<ip_field_name>" : "192.168.100.14/24"}}}
查詢字符串查詢將如下所示:
我不是在談論存儲CIDRs如IP地址,我說的是使用CIDR掩碼搜索IP地址。這讓我相信一定有辦法做到這一點:https://github.com/elastic/elasticsearch/issues/7464 – nephets