run bin/elasticsearch in the downloaded folder
by default uses 9200 port
Terminology comparing to sql
cluster - server pool
node - server
index - database
types - table
document - row
fields - col
Check status
cluster health curl -XGET 'localhost:9200/_cat/health?v&pretty'
green - good
y
yellow - replicas are not yet allocated; can happen for initial stage where only one node is in the cluster
red - some data are missing, partially working with search request since data still exist lol
Actions
CRUD and search operations can be performed over the indexes
pattern - <REST Verb> /<Index>/<Type>/<ID>
- List indices
_cat/health?
- create index object customer
PUT /customer/1?pretty
or POST request with specified id - add stuff to index customer; auto add index if not exist
curl -XPUT 'localhost:9200/customer/external/1?pretty&pretty' -H 'Content-Type: application/json' -d'
{
"name": "John Doe"
}
'
stuff is refer to as document
type external must be specified
- delete similar
- update basically change index attribute if attribute exist or, add new by
{
"doc": { "name": "Joe", "age": 20 }
}
- script execution (where ctx._source means current source document
{
"script": "ctx._source.age += 5"
}
- batch - _bulk api
/customer/external/_bulk
{"index": {"_id": "1"}}
{"name": "Joe" }
...
{"update": ..
{"doc": {..}}
Search operations
- paging, sorting, filtering, scripting, aggregations etc
_search endpoint - simple calls to api with post request, no stateful database cursor or anything