|
|
|
@ -1,14 +1,61 @@ |
|
|
|
|
#!/bin/sh |
|
|
|
|
set -e |
|
|
|
|
|
|
|
|
|
if [[ "$ES_ADDR" == *"localhost"* || "$ES_ADDR" == *"127.0.0.1"* ]]; then |
|
|
|
|
echo "ES_ADDR is localhost, using docker address: http://elasticsearch:9200" |
|
|
|
|
ES_ADDR="http://elasticsearch:9200" |
|
|
|
|
# Parse command-line arguments |
|
|
|
|
while [ $# -gt 0 ]; do |
|
|
|
|
case "$1" in |
|
|
|
|
--es-address) |
|
|
|
|
case "$2" in |
|
|
|
|
"" | -*) echo "Error: Missing value for $1" >&2; exit 1;; |
|
|
|
|
esac |
|
|
|
|
ES_ADDR_ARG="$2" |
|
|
|
|
shift 2 |
|
|
|
|
;; |
|
|
|
|
--index-dir) |
|
|
|
|
case "$2" in |
|
|
|
|
"" | -*) echo "Error: Missing value for $1" >&2; exit 1;; |
|
|
|
|
esac |
|
|
|
|
INDEX_DIR_ARG="$2" |
|
|
|
|
shift 2 |
|
|
|
|
;; |
|
|
|
|
--docker-host) |
|
|
|
|
case "$2" in |
|
|
|
|
"true" | "false") REPLACE_ES_ADDR_WITH_DOCKER_HOST_ARG="$2" ;; |
|
|
|
|
*) echo "Error: Invalid value for $1. Must be 'true' or 'false'" >&2; exit 1;; |
|
|
|
|
esac |
|
|
|
|
shift 2 |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
# unknown option |
|
|
|
|
shift |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
# If ES_ADDR_ARG argument is provided, use it. Otherwise, use environment variable or default logic. |
|
|
|
|
if [ -n "$ES_ADDR_ARG" ]; then |
|
|
|
|
ES_ADDR=$ES_ADDR_ARG |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
REPLACE_ES_ADDR=${REPLACE_ES_ADDR_WITH_DOCKER_HOST_ARG:-true} |
|
|
|
|
if [ "$REPLACE_ES_ADDR" = "true" ]; then |
|
|
|
|
case "$ES_ADDR" in |
|
|
|
|
*localhost*|*"127.0.0.1"*) |
|
|
|
|
echo "ES_ADDR is localhost, using docker address: http://elasticsearch:9200" |
|
|
|
|
ES_ADDR="http://elasticsearch:9200" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# If INDEX_DIR_ARG argument is provided, use it. Otherwise, use the default. |
|
|
|
|
if [ -n "$INDEX_DIR_ARG" ]; then |
|
|
|
|
INDEX_DIR=$INDEX_DIR_ARG |
|
|
|
|
else |
|
|
|
|
INDEX_DIR=/es_index_schema |
|
|
|
|
fi |
|
|
|
|
# ES_ADDR=http://localhost:31160 |
|
|
|
|
INDEX_DIR=/es_index_schema |
|
|
|
|
|
|
|
|
|
echo "ES_ADDR: $ES_ADDR" |
|
|
|
|
echo "INDEX_DIR: $INDEX_DIR" |
|
|
|
|
|
|
|
|
|
AUTH_PARAM="" |
|
|
|
|
if [ -n "$ES_USERNAME" ]; then |
|
|
|
@ -38,30 +85,32 @@ if [ -z "$ES_TEMPLATES" ]; then |
|
|
|
|
exit 1 |
|
|
|
|
else |
|
|
|
|
# Add index creation logic |
|
|
|
|
echo -e "🔄 Creating Elasticsearch indexes..." |
|
|
|
|
for template_file in $ES_TEMPLATES; do |
|
|
|
|
|
|
|
|
|
template_name=$(basename "$template_file" | sed 's/\.index-template\.json$//') |
|
|
|
|
echo -e "➡️ Registering template: $template_name" |
|
|
|
|
# Check if index template exists |
|
|
|
|
if curl -s -f $AUTH_PARAM -I "${ES_ADDR}/_index_template/$template_name" >/dev/null; then |
|
|
|
|
echo -e "ℹ️ Index template $template_name already exists" |
|
|
|
|
else |
|
|
|
|
echo -e "➡️ Registering template: $template_name" |
|
|
|
|
|
|
|
|
|
# Attempt to register index template |
|
|
|
|
response=$(curl -s $AUTH_PARAM -X PUT "${ES_ADDR}/_index_template/$template_name" \ |
|
|
|
|
-H "Content-Type: application/json" \ |
|
|
|
|
-d @"$template_file" 2>&1) |
|
|
|
|
# Attempt to register index template |
|
|
|
|
response=$(curl -s $AUTH_PARAM -X PUT "${ES_ADDR}/_index_template/$template_name" \ |
|
|
|
|
-H "Content-Type: application/json" \ |
|
|
|
|
-d @"$template_file" 2>&1) |
|
|
|
|
|
|
|
|
|
# Check if successful |
|
|
|
|
if echo "$response" | grep -q '"acknowledged":true'; then |
|
|
|
|
echo -e "✅ Template $template_name registered successfully" |
|
|
|
|
else |
|
|
|
|
echo -e "❌ Failed to register template $template_name. Response: $response" |
|
|
|
|
exit 1 |
|
|
|
|
# Check if successful |
|
|
|
|
if echo "$response" | grep -q '"acknowledged":true'; then |
|
|
|
|
echo -e "✅ Template $template_name registered successfully" |
|
|
|
|
else |
|
|
|
|
echo -e "❌ Failed to register template $template_name. Response: $response" |
|
|
|
|
exit 1 |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
index_name=$(basename "$template_file" | sed 's/\.index-template\.json$//') |
|
|
|
|
echo -e "➡️ Creating index: $index_name" |
|
|
|
|
|
|
|
|
|
# Check if index exists |
|
|
|
|
if ! curl -s -f $AUTH_PARAM "${ES_ADDR}/_cat/indices/$index_name" >/dev/null; then |
|
|
|
|
echo -e "➡️ Creating index: $index_name" |
|
|
|
|
# Create index (matching template's index_patterns) |
|
|
|
|
curl $AUTH_PARAM -X PUT "${ES_ADDR}/$index_name" -H "Content-Type: application/json" |
|
|
|
|
echo "" |
|
|
|
@ -90,4 +139,4 @@ else |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
echo "Elasticsearch setup completed." |
|
|
|
|
exit 0 |
|
|
|
|
exit 0 |