#! /bin/bash ES_ARG="$@" SYSTEM="m2" DB_NAME="m2" DB_USER="m2" DB_PASS="m2" DB_HOST="localhost" if [ "$ES_ARG" == "index delete" ]; then curl -XDELETE "localhost:9200/${DB_NAME}?pretty" mysql -h $DB_HOST $DB_NAME -u $DB_USER -p$DB_PASS -e "DELETE FROM conflines WHERE name = 'ES_SYNC_LAST_CALL_ID'" mysql -h $DB_HOST $DB_NAME -u $DB_USER -p$DB_PASS -e "DELETE FROM conflines WHERE name = 'ES_SYNC_MAX_CALL_ID'" exit 0 fi if [ "$ES_ARG" == "shutdown" ]; then curl -XPOST "http://localhost:9200/_shutdown?pretty" &> /dev/null if [ "X$?" != "X0" ]; then echo "Elasticsearch is not running" else echo "Stopping Elasticsearch" echo -n "." sleep 1 echo -n "." sleep 1 echo -n "." sleep 1 killall -9 java &> /dev/bull echo "" echo "Elasticsearch stopped" fi exit 0 fi if [ "$ES_ARG" == "start" ]; then curl "http://localhost:9200/?pretty" &> /dev/null if [ "X$?" == "X0" ]; then echo "Elasticsearch is running" exit 0 fi ulimit -n 64000 /usr/local/elasticsearch/bin/elasticsearch -d echo "" echo "Starting Elasticsearch" echo "" for i in `seq 1 60`; do echo -n "." sleep 1 curl "http://localhost:9200/?pretty" &> /dev/null if [ "X$?" == "X0" ]; then echo "" curl "http://localhost:9200/?pretty" echo "" echo "Elasticsearch started" echo "" exit 0 fi done echo "" echo "Could not start Elasticsearch in 60 seconds..." echo "" killall -9 java &> /dev/null exit 1 fi if [ "$ES_ARG" == "status" ]; then curl "http://localhost:9200/_cluster/health?pretty" curl "http://localhost:9200/_nodes/process?pretty" exit 0 fi if [ "$ES_ARG" == "sync stop" ]; then curl -XDELETE "localhost:9200/_river/${SYSTEM}_jdbc_river/?pretty" exit 0 fi if [ "$ES_ARG" == "sync start" ]; then curl -XPUT "localhost:9200/_river/${SYSTEM}_jdbc_river/_meta?pretty" -d "{ \"type\" : \"jdbc\", \"threadpoolsize\" : 1, \"schedule\" : \"0 0-59 0-23 ? * *\", \"jdbc\" : [ { \"url\" : \"jdbc:mysql://${DB_HOST}:3306/${DB_NAME}\", \"user\" : \"$DB_USER\", \"password\" : \"$DB_PASS\", \"ignore_null_values\" : true, \"rounding\" : \"halfeven\", \"scale\" : 9, \"sql\" : [ { \"statement\" : \"UPDATE conflines SET value = (SELECT MAX(id) FROM calls) WHERE name = 'ES_SYNC_MAX_CALL_ID'\" }, { \"statement\" : \"SELECT id AS _id,calldate,billsec,IF(disposition = 'ANSWERED',1,0) AS disposition,src_device_id,dst_device_id,provider_id,provider_billsec,provider_price,user_id,user_billsec,user_price,prefix FROM calls WHERE id > (SELECT value FROM conflines WHERE name = 'ES_SYNC_LAST_CALL_ID' LIMIT 1) AND disposition = 'ANSWERED'\" } ], \"index\" : \"${DB_NAME}\", \"type\" : \"calls\" }, { \"url\" : \"jdbc:mysql://${DB_HOST}:3306/${DB_NAME}\", \"user\" : \"$DB_USER\", \"password\" : \"$DB_PASS\", \"ignore_null_values\" : true, \"sql\" : [ { \"statement\" : \"SELECT id AS _id,calldate,IF(disposition = 'ANSWERED',1,0) AS disposition,src_device_id,dst_device_id,provider_id,user_id,prefix FROM calls WHERE id > (SELECT value FROM conflines WHERE name = 'ES_SYNC_LAST_CALL_ID' LIMIT 1) AND disposition != 'ANSWERED'\" }, { \"statement\" : \"UPDATE conflines AS a INNER JOIN conflines AS b ON b.name = 'ES_SYNC_MAX_CALL_ID' SET a.value = b.value WHERE a.name = 'ES_SYNC_LAST_CALL_ID'\" } ], \"index\" : \"${DB_NAME}\", \"type\" : \"calls\" } ] }" exit 0 fi if [ "$ES_ARG" == "count" ]; then curl -XGET "localhost:9200/${DB_NAME}/calls/_count?pretty" exit 0 fi if [ "$ES_ARG" == "index create" ]; then curl -XPUT "localhost:9200/${DB_NAME}?pretty" -d '{ "settings": { "index.cache.query.enable": true }, "mappings": { "calls": { "dynamic": "strict", "_all": { "enabled" : false }, "properties": { "calldate": { "type": "date" }, "billsec": { "type": "integer" }, "disposition": { "type": "byte", "doc_values": true }, "src_device_id": { "type": "integer", "doc_values": true }, "dst_device_id": { "type": "integer", "doc_values": true }, "provider_id": { "type": "integer", "doc_values": true }, "provider_billsec": { "type": "integer" }, "provider_price": { "type": "double" }, "user_id": { "type": "integer", "doc_values": true }, "user_billsec": { "type": "integer" }, "user_price": { "type": "double" }, "prefix": { "type": "string", "index": "not_analyzed", "doc_values": true } } } } }' mysql -h $DB_HOST $DB_NAME -u $DB_USER -p$DB_PASS -e "DELETE FROM conflines WHERE name = 'ES_SYNC_LAST_CALL_ID'" mysql -h $DB_HOST $DB_NAME -u $DB_USER -p$DB_PASS -e "DELETE FROM conflines WHERE name = 'ES_SYNC_MAX_CALL_ID'" mysql -h $DB_HOST $DB_NAME -u $DB_USER -p$DB_PASS -e "INSERT INTO conflines (name, value) VALUES('ES_SYNC_LAST_CALL_ID', '0')" mysql -h $DB_HOST $DB_NAME -u $DB_USER -p$DB_PASS -e "INSERT INTO conflines (name, value) VALUES('ES_SYNC_MAX_CALL_ID', '0')" exit 0 fi echo "Wrong command: $ES_ARG" exit 1