Skip to content

ip_range ipv4 to ipv6 term query unexpected results #124793

Open
@DanielBrown2023

Description

@DanielBrown2023

Elasticsearch Version

8.17.1

Installed Plugins

No response

Java Version

bundled

OS Version

Elastic Cloud

Problem Description

Term query of ip_range type field does not return expected documents.

When docs ip_range field contains "{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:0:0:ffff:ffff" }}" or smaller "lte" values consisting of ipv6 strings, terms queries will not match a ipv4 string even when the value is in the range of the ip_range field.

# Bug Edge cases
PUT _index_template/ip_range_index
{
    "index_patterns": ["ip_range_index"],
    "template": {
        "mappings": {
            "properties": {
                "ip_range": {
                    "type": "ip_range"
                }
            }
        }
    }
}
POST _bulk
{ "index" : { "_index" : "ip_range_index", "_id" : "1" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "2" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:ffff:ffff:ffff:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "3" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:ffff:ffff:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "4" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:ffff:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "5" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "6" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:0:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "7" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:0:0:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "8" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:0:0:0:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "9" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:0:0:0:0" }}

# query returns 9 hits as expected
GET ip_range_index/_search
{
    "query": {
        "term": {
          "ip_range": {
            "value": "::0"
          }
        }
    }
}

# query returns 6 hits, should be 9? 
GET ip_range_index/_search
{
    "query": {
        "term": {
          "ip_range": {
            "value": "0.0.0.0"
          }
        }
    }
}

Expectation would be to have both the IPv4 and IPv6 version of this query return all 9 documents

Steps to Reproduce

# Bug Edge cases
PUT _index_template/ip_range_index
{
    "index_patterns": ["ip_range_index"],
    "template": {
        "mappings": {
            "properties": {
                "ip_range": {
                    "type": "ip_range"
                }
            }
        }
    }
}
POST _bulk
{ "index" : { "_index" : "ip_range_index", "_id" : "1" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "2" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:ffff:ffff:ffff:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "3" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:ffff:ffff:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "4" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:ffff:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "5" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:ffff:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "6" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:0:ffff:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "7" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:0:0:ffff:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "8" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:0:0:0:ffff" }}
{ "index" : { "_index" : "ip_range_index", "_id" : "9" } }
{"ip_range": { "gte": "0:0:0:0:0:0:0:0", "lte": "0:0:0:0:0:0:0:0" }}

# query returns 9 hits as expected
GET ip_range_index/_search
{
    "query": {
        "term": {
          "ip_range": {
            "value": "::0"
          }
        }
    }
}

# query returns 6 hits, should be 9? 
GET ip_range_index/_search
{
    "query": {
        "term": {
          "ip_range": {
            "value": "0.0.0.0"
          }
        }
    }
}

Logs (if relevant)

No response

Metadata

Metadata

Assignees

Labels

:Search Relevance/SearchCatch all for Search Relevance>bugTeam:Search RelevanceMeta label for the Search Relevance team in Elasticsearchpriority:normalA label for assessing bug priority to be used by ES engineers

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions