Open
Description
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