Table of Contents

Elasticsearch

The following assumes that elasticsearch is running on the localhost on port 9200.

How do I learn more? https://www.elastic.co/guide/en/elasticsearch/reference/current/_executing_searches.html

General Info about elasticsearch instance

How is elasticsearch doing?

curl -XGET 'localhost:9200/_cat/health?v&pretty' 
curl -XGET 'localhost:9200/_cat/nodes?v’

What are the indices on this instance?

curl -XGET 'localhost:9200/_cat/indices?v&pretty’

Searching Data

Viewing Data

This will give you, by default, the first 20 results as prettified JSON

curl –XGET ‘localhost:9200/index/_search?pretty’

Filtering Results

Only get results that match certain criteria:

curl -XGET 'localhost:9200/index/_search?pretty' -H 'Content-Type: application/json' –d’{"query": { "match": { "field": "value" } } }'
curl -XGET 'localhost:9200/index/_search?pretty' -H 'Content-Type: application/json' –d’{ "query": {
  "bool": {
    "must": [
      { "match": { "address": "mill" } },
      { "match": { "address": "lane" } }
      ]
    }
  }
}'

Sorting Examples

Search index, matching all, and sorting by field

curl -XGET 'localhost:9200/index/_search?q=*&sort=field:asc&pretty’

Search index, matching all, and sorting by field

curl -XGET 'localhost:9200/index/_search?pretty' -H 'Content-Type: application/json' -d’
{
  "query": { "match_all": {} },
  "sort": [
    { "field": "asc" }
  ]
}'

Limiting Results

Only give one result back from searching index:

curl -XGET 'localhost:9200/index/_search?q=*&size=1&pretty'

Give back one result, starting at search result 10, from index

curl -XGET 'localhost:9200/bank/_search?q=*&size=1&from=10&pretty'

Aggregations

Finding distinct entities

curl -XGET 'localhost:9200/bank/_search?pretty' -H 'Content-Type: application/json' -d'
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword"
      }
    }
  }
}'

Adding Information

Adding an index

curl -XPUT 'localhost:9200/newindex?pretty’

Inserting documents to an index

Insert the JSON document (after the -d) into the index with the id newid:

curl –XPUT ‘localhost:9200/index/external/newid?pretty’ –d’{“field”:”data”}’

Adding from a File

mongoimport --db dbname --collection whichcollection --file mydata.json
curl -XPOST 'http://localhost:9200/dbname' -d @mydata.json
curl -XPOST 'http://localhost:9200/dbname/_bulk' —data-binary @mydata.json

Deleting Information

curl -XDELETE 'localhost:9200/students?pretty'