Elasticsearch, chuleta de búsquedas y reindexación

Chuleta de recuerdo de cómo hacer búsquedas y la reindexación, dudo que sea importante para alguien 😀

Cómo contar elementos:

Eventos en los últimos 15 minutos:

GET /winlogbeat-2018.07/_count
{ 
  "query":{
    "bool": {
      "filter": [
        {"range": {"@timestamp": {"gte":"now-15m","lte":"now"}}},
        {"term": {"event_id":4771}}
      ]
    }
  }
}

 

Agrupación simple:

GET psftp-*/_search
{
  "query" : {
    "bool": {
         "must_not": [
         {"exists": {"field": "geoip"}},
         {"term": {"tags": "_grokparsefailure"}}
       ]
    }
  },
  "size":0,
  "aggs":{
    "unique_ids": {
      "terms": {
        "field": "IP_cliente",
        "size": 10000
      }
    }
  }
}

Agrupación por niveles:

GET gesdoc-*/_search
{
  "query" : {
    "match_all": {}
  },
  "size": 0,
  "aggs":{
    "hostnames": {
      "terms": {
      "field": "hostname",
      "size": 10
      },
      "aggs": {
        "host": {
          "terms":{
            "field": "app",
            "size": 20
          }
        }
      }
    }
  }
}

Reindexación

Ojo con esta parte, hay que esperar la reindexación de cada índice antes de lanzar el siguiente paso. Si se borra un índice que se está reindexando es probable que perdamos los datos.

POST _reindex
{
  "source": {
    "index": "arcgis-2017.10"
  },
  "dest": {
    "index": "arcgis-new-2017.10"
  }
}

DELETE arcgis-2017.10

POST _reindex
{
  "source": {
    "index": "arcgis-new-2017.10"
  },
  "dest": {
    "index": "arcgis-2017.10"
  }
}

DELETE arcgis-new-2017.10

Update by query. Cambiamos una localización geográfica para un rango de IPs locales que no tengan localización ya.

POST /psftp-2017.06/_update_by_query?q=cliente: [192.168.255.0 TO 192.168.255.255] AND (!geoip:*)
{
  "script": {
    "source": "ctx._source[params.latitude] = params.latitudevalue;
     ctx._source[params.longitude] = params.longitudevalue;
     ctx._source[params.location] = params.locationvalue;
     ctx._source[params.postalcode] = params.postalcodevalue;
     ctx._source[params.cityname] = params.citynamevalue;
     ctx._source[params.timezone] = params.timezonevalue;
     ctx._source[params.regionname] = params.regionnamevalue;
     ctx._source[params.continentcode] = params.continentcodevalue;
     ctx._source[params.countrycode3] = params.countrycode3value;
     ctx._source[params.countryname] = params.countrynamevalue;
     ctx._source[params.regioncode] = params.regioncodevalue;
     ctx._source[params.countrycode2] = params.countrycode2value;"
    ,
    "params": {
      "latitude" : "geoip.latitude",
      "latitudevalue": 44.450555,
      "longitude": "geoip.longitude",
      "longitudevalue": -5.752515,
      "location" : "geoip.location",
      "locationvalue": [-5.752515,44.450555],
      "postalcode": "geoip.postal_code",
      "postalcodevalue": 15245,
      "cityname": "geoip.city_name",
      "citynamevalue": "Bollulos",
      "timezone":"geoip.timezone",
      "timezonevalue":"Europe/Madrid",
      "regionname":"geoip.region_name",
      "regionnamevalue":"Huelva",
      "continentcode": "geoip.continent_code",
      "continentcodevalue":"EU",
      "countrycode3":"geoip.country_code3",
      "countrycode3value":"ES",
      "countryname":"geoip.country_name",
      "countrynamevalue":"Spain",
      "regioncode":"geoip.region_code",
      "regioncodevalue":"29",
      "countrycode2":"geoip.country_code2",
      "countrycode2value":"ES"
    }
  }
}

Añadir un template para índices, sólo se aplica para índices nuevos

 

PUT /_template/gesdoc
  {
    "index_patterns": ["gesdoc*"],
    "settings": {
      "index": {
        "number_of_shards": "1",
        "codec": "best_compression",
        "number_of_replicas": "1"
      }
    },
    "mappings": {
      "doc": {
        "properties": {
          "@timestamp": {
            "type": "date"
          },
          "@version": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "app": {
            "type": "keyword",
            "index": true
          },
          "hostname": {
            "type": "keyword",
            "index": true
          },
          "origen": {
            "type": "keyword",
            "index": true
          },
          "mensaje": {
            "type": "text",
            "index": true
          },
          "uptime": {
            "type": "long"
          }
        }
      }
    }
  }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *