#!/bin/bash ## # Requirements: jq, jd, curl # Variables: # - ES_AUTH --> elasticsearch auth ## alias es_curl="curl -H "application/json" -u $ES_AUTH" export WORKDIR=/tmp/index-compare mkdir -p $WORKDIR rm -rf $WORKDIR/* # Elasticsearch server details ES_HOST="localhost" ES_PORT="9200" # Indices to compare INDEX1=".ds-metricbeat-8.8.0-argocd-2023.06.07-000003" INDEX2=".ds-metricbeat-8.8.0-*" function downloadIndex() { content=$(es_curl -s -XGET "http://${ES_HOST}:${ES_PORT}/$1/_mapping") data=$(jq -r 'to_entries[0].value.mappings.properties' <<< "${content}") echo "${data}" > "$WORKDIR/$1.json" } downloadIndex $INDEX1 INDICES=$(es_curl -s -XGET "http://${ES_HOST}:${ES_PORT}/_cat/indices/$INDEX2?h=index") for INDEX2 in $INDICES; do echo " + diff $INDEX1 <-> $INDEX2" downloadIndex $INDEX2 jd -set $WORKDIR/$INDEX1.json $WORKDIR/$INDEX2.json echo "" echo "" done