Preface
This post assumes that you have some basic understanding of Docker, Docker Compose, and the key components used in the docker ecosystem. Get up to speed, with the Prepare Your Docker Environment section of Docker docs.
- Install Docker
- install docker-compose
- Install Elasticsearch or Run Elasticsearch container
Frequently used commands
1
| curl -X GET "localhost:9200/_cat/health"
|
- Get the number of nodes of the Elasticsearch Cluster
1
| curl -X GET "localhost:9200/_cat/nodes"
|
- Check with the shards with
1
| curl -X GET "localhost:9200/_cat/shards"
|
1
| curl -X GET "localhost:9200/_cat/indices?v"
|
- Get list of indices with specific column, we want to the column index, which will list the index names
1
| curl -X GET "localhost:9200/_cat/indices?v&h=index"
|
- Get the list of indices sort by column
1
2
3
4
5
6
7
8
9
| curl -X GET "localhost:9200/_cat/indices?v&s=docs.count:desc"
curl -X GET "localhost:9200/_cat/indices?v&s=docs.count:asc"
curl -X GET "localhost:9200/_cat/indices?v&s=index"
curl -X GET "localhost:9200/_cat/indices?v&s=docs.count:desc"
curl -X GET "localhost:9200/_cat/indices?v&s=docs.count:desc"
|
- Why the health status of the Elasticsearch is
red
Number of nodes in the cluster was three so there was no extra node to create the replica, and restore the unassigned indexes, So the health was turning to red. Created the index with settings property and set the number_of_replicas as 0.
1
2
3
4
5
6
| curl -XPUT 'localhost:9200/_settings' -H 'Content-Type: application/json' -d '
{
"index" : {
"number_of_replicas" : 0
}
}'
|
Create the Indice
- First, let’s create a twitter user, and add some tweets
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| curl -XPUT 'http://127.0.0.1:9200/twitter/user/kimchy' -d '{ "name" : "Shay Banon" }'
curl -XPUT 'http://127.0.0.1:9200/twitter/tweet/1' -d '
{
"user": "kimchy",
"postDate": "2009-11-15T13:12:00",
"message": "Trying out Elasticsearch multinode, so far so good?"
}'
curl -XPUT 'http://127.0.0.1:9200/twitter/tweet/2' -d '
{
"user": "kimchy",
"postDate": "2009-11-15T14:12:12",
"message": "Balu tweet, will it be indexed?"
}'
|
- Now, let’s see if the information was added by GETting it:
1
2
3
| curl -XGET 'http://127.0.0.1:9200/twitter/user/kimchy?pretty=true'
curl -XGET 'http://127.0.0.1:9200/twitter/tweet/1?pretty=true'
curl -XGET 'http://127.0.0.1:9200/twitter/tweet/2?pretty=true'
|
- Create customer entity with 1000 records
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| curl -sXPUT 'http://localhost:9200/customer/?pretty' -d '{
"settings" : {
"index" : {
"number_of_shards" : 5,
"number_of_replicas" : 0
}
}
}'
while ! curl -s "localhost:9200/_cat/indices?v" | grep green; do
sleep 0.1
done
for i in `seq 1 500`; do
curl -sXPUT "localhost:9200/customer/external/$i?pretty" -d "
{
\"number\": $i,
\"name\": \"John Doe - $i\"
}"
done
|
- Create student entity with 1000 records
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| curl -sXPUT 'http://localhost:9200/student/?pretty' -d '{
"settings" : {
"index" : {
"number_of_shards" : 5,
"number_of_replicas" : 0
}
}
}'
while ! curl -s "localhost:9200/_cat/indices?v" | grep green; do
sleep 0.1
done
for i in `seq 1 20`; do
curl -sXPUT "localhost:9200/student/external/$i?pretty" -d "
{
\"number\": $i,
\"name\": \"Ram - $i\"
}"
done
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| curl -X PUT "localhost:9200/twitter?pretty"
curl -X PUT "localhost:9200/school?pretty" -H 'Content-Type: application/json' -d'
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
},
"mappings" : {
"properties" : {
"name" : { "type" : "text" }
}
}
}
'
|
Delete index
1
| curl -X DELETE "localhost:9200/school?pretty"
|
Get Index
- Get the mappings and setting with the following
1
2
3
4
5
6
| curl -X GET "localhost:9200/school?pretty"
curl -X GET "localhost:9200/school/_mapping?pretty"
curl -X GET "localhost:9200/school/_settings?pretty"
|
- Checks if an index exists
1
| curl -I "localhost:9200/twitter?pretty"
|
1
| curl -I "localhost:9200/twitter?pretty"
|
- Update index settings API
1
2
3
4
5
6
7
| curl -X PUT "localhost:9200/school/_settings?pretty" -H 'Content-Type: application/json' -d'
{
"index" : {
"number_of_replicas" : 2
}
}
'
|
- Get the Statistics of the index
1
2
3
4
5
| curl -X GET "localhost:9200/school/_stats?pretty"
curl -X GET "localhost:9200/_stats?pretty"
curl -X GET "localhost:9200/index1,index2/_stats?pretty"
|