shellscripts/aws/cloudsearch/clone_fieldConf.sh

108 lines
2.6 KiB
Bash

#!/bin/bash
#### USAGE:
## cs_cloner.sh <source domain> <dest domain> <region, optional. will try your CLI's configured default domain.>
## Requires the AWS CLI to be configured, as it will make calls using the CLI itself.
srcdomain=$1
destdomain=$2
region=$3
src_qry="aws cloudsearch describe-index-fields --domain-name $srcdomain --output json"
if [[ $region && ${region-x} ]]; then
src_qry=$src_qry" --region $region"
fi
fields=`eval $src_qry | jq .IndexFields`
num_fields=`echo $fields | jq '. | length'`
i=0
until [ $i == $num_fields ]; do
field=`echo $fields | jq ".[$i]"`
field_name=`echo $field | jq -r '.Options.IndexFieldName'`
field_type=`echo $field | jq -r '.Options.IndexFieldType'`
case "$field_type" in
text)
opts=TextOptions
;;
text-array)
opts=TextArrayOptions
;;
date)
opts=DateOptions
;;
date-array)
opts=DateArrayOptions
;;
double)
opts=DoubleOptions
;;
double-array)
opts=DoubleArrayOptions
;;
literal)
opts=LiteralOptions
;;
literal-array)
opts=LiteralArrayOptions
;;
int)
opts=IntOptions
;;
int-array)
opts=IntArrayOptions
;;
latlon)
opts=LatLonOptions
;;
esac
field_sort=`echo $field | jq -r ".Options.$opts.SortEnabled"`
field_facet=`echo $field | jq -r ".Options.$opts.FacetEnabled"`
field_search=`echo $field | jq -r ".Options.$opts.SearchEnabled"`
field_return=`echo $field | jq -r ".Options.$opts.ReturnEnabled"`
field_highlight=`echo $field | jq -r ".Options.$opts.HighlightEnabled"`
field_scheme=`echo $field | jq -r ".Options.$opts.AnalysisScheme"`
field_default_value=`echo $field | jq -r ".Options.$opts.DefaultValue"`
str="aws cloudsearch define-index-field --domain-name $destdomain --name $field_name --type $field_type"
if [ $field_sort != 'null' ]; then
str=$str" --sort-enabled $field_sort"
fi
if [ $field_facet != 'null' ]; then
str=$str" --facet-enabled $field_facet"
fi
if [ $field_search != 'null' ]; then
str=$str" --search-enabled $field_search"
fi
if [ $field_return != 'null' ]; then
str=$str" --return-enabled $field_return"
fi
if [ $field_highlight != 'null' ]; then
str=$str" --highlight-enabled $field_highlight"
fi
if [ $field_scheme != 'null' ]; then
str=$str" --analysis-scheme $field_scheme"
fi
if [ $field_default_value != 'null' ]; then
str=$str" --default-value $field_default_value"
fi
if [[ $region && ${region-x} ]]; then
str=$str" --region $region"
fi
eval $str
let i+=1
done