This article will give a few examples of doing direct-to-Elasticsearch queries. This is normally not necessary and not advised as queries should be done through the Swarm Search API.
Preparation
Set a Swarm Node IP as SCSP_HOST, Elasticsearch IP and the Elasticsearch Index variables. These presume the Support tools are installed at /root/dist
export SCSP_HOST=<any Swarm node> export ESIP=$(python /root/dist/platform-get-default-search-feed-ip.py $SCSP_HOST | awk '{ print $1 }') export ESINDEX=index_$(python /root/dist/platform-get-default-search-index-name.py $SCSP_HOST)
Calls direct to ES
ES information by stream name
FILENAME=<filename> && curl -s "$ESIP:9200/$ESINDEX/_search?q=stype:NAMED+AND+name:$FILENAME&pretty" | jq -r '.hits.hits[]'
This will return all named streams by that name across buckets/ domains. You can delineate by bucket or domain id as seen in other examples.
ES information by etag
ETAG=<etag> && curl -s "$ESIP:9200/$ESINDEX/_search?pretty&q=etag:$ETAG" | jq '.hits.hits[]'
Get Domain id
from Swarm
DOMAIN=<domain name> && curl -sIL $SCSP_HOST?domain=$DOMAIN | grep ^Etag | awk '{ print $2 }' | sed 's/"//g'
from ES directly
DOMAIN=domain-for-versioning && curl -s "$ESIP:9200/$ESINDEX/_search?q=stype:DOMAIN+AND+name:$DOMAIN&pretty" | jq -r '.hits.hits[]._source.etag'
Get Bucket id (context id)
from Swarm by domain name
BUCKET=<bucket name> && DOMAIN=<domain name> && curl -sIL "$SCSP_HOST/$BUCKET?domain=$DOMAIN" | grep ^Etag | awk '{ print $2 }' | sed 's/"//g'
from ES directly- by domain id
BUCKET=<bucket name> && DOMAINID=<domainid> && curl -s "$ESIP:9200/$ESINDEX/_search?q=domainid:$DOMAINID+AND+stype:BUCKET+AND+name:$BUCKET&pretty" | jq -r '.hits.hits[]._source.etag'
You can remove the
name:domain-for-versioning
if you know the bucket name is unique among domains. You can leave it off if you aren't sure but might get multiple results to sort through.
Stream count by bucket (context id)
CONTEXTID=<contextid> && curl -s -XPOST -H "Content-Type: application/json" --data-binary '{"query":{"bool":{"must":[{"match":{"contextid":"'"$CONTEXTID"'"}}]}}}' "$ESIP:9200/$ESINDEX/_count" | jq '.count'
Stream count by Domain (domain id)
DOMAINID=<domainid> && curl -s -XPOST -H "Content-Type: application/json" --data-binary '{"query":{"bool":{"must":[{"match":{"domainid":"'"$DOMAINID"'"}}]}}}' "$ESIP:9200/$ESINDEX/_count" | jq '.count'