Você pode verificar a presença de :
ou seguir o tamanho da string.
Mais, mas não todos! - ::1
e outros são mais curtos - os endereços IPv6 serão > 15 caracteres. O comprimento pode ser uma maneira rápida, se você precisar apenas de uma estimativa.
Para precisão, analiso a string e determino se é IPv6 ou IPv4 e armazeno a saída em um campo booleano separado. Como alternativa, faça a análise de sequência adequada usando o recurso de script (ou seja, on-the-fly).
{
"filter": {
"script": {
"script": "doc['ip_address'].size() > 15"
}
}
}