Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

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'
  • No labels