---
# System prepended metadata

title: Домашнее задание к занятию "6.5. Elasticsearch"
tags: [devops, netology]

---

###### tags: `netology` `devops`

# Домашнее задание к занятию "6.5. Elasticsearch"

## Задача 1

### Dockerfile:
```dockerfile=
FROM centos:7

RUN yum install wget perl-Digest-SHA -y

RUN groupadd -r elasticsearch && \
    useradd -r -g  elasticsearch elasticsearch
USER elasticsearch

WORKDIR /home/elasticsearch

RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz  && \
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz.sha512 && \
    shasum -a 512 -c elasticsearch-7.11.1-linux-x86_64.tar.gz.sha512 && \
    tar -xzf elasticsearch-7.11.1-linux-x86_64.tar.gz

COPY ./elasticsearch.yml ./elasticsearch-7.11.1/config

EXPOSE 9200

ENTRYPOINT ./elasticsearch-7.11.1/bin/elasticsearch
```

### Link:
https://hub.docker.com/repository/docker/frolmr/6_5_elastic

### Response:
```bash=
➜ curl -X GET "localhost:9200/?pretty"

{
  "name" : "netology_test",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "hddU2vG_Quy4fGrjqOpMPg",
  "version" : {
    "number" : "7.11.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "ff17057114c2199c9c1bbecc727003a907c0db7a",
    "build_date" : "2021-02-15T13:44:09.394032Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
```

## Задача 2
### Добавьте в elasticsearch 3 индекса:
```bash=
➜ curl -X PUT "localhost:9200/ind-1?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  }
}
'
```
```bash=
➜ curl -X PUT "localhost:9200/ind-2?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 1
  }
}
'
```
```bash=
➜ curl -X PUT "localhost:9200/ind-3?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 4,
    "number_of_replicas": 2
  }
}
'
```

### Получите список индексов и их статусов:
```bash=
➜ curl -X GET -u undefined:$ESPASS "localhost:9200/_cat/indices/ind-*?v=true&s=index&pretty"

health status index uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   ind-1 esoOQBzkSB62VBrWXJvE9w   1   0          0            0       208b           208b
yellow open   ind-2 tdsm3LIKRo2BWfz11sYrLg   2   1          0            0       416b           416b
yellow open   ind-3 HcKdUeeNRo-1oRchrmebGA   4   2          0            0       832b           832b
```

### Получите состояние кластера elasticsearch
```bash=
➜ curl -X GET -u undefined:$ESPASS "localhost:9200/_cluster/health?pretty"

{
  "cluster_name" : "elasticsearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 7,
  "active_shards" : 7,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 10,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 41.17647058823529
}
```

## Задача 3

### Используя API зарегистрируйте данную директорию как snapshot repository c именем netology_backup
```bash=
➜ curl -X PUT -u undefined:$ESPASS "localhost:9200/_snapshot/netology_backup?pretty" -H 'Content-Type: application/json' -d'
{
  "type": "fs",
  "settings": {
    "location": "snapshots"
  }
}
'

{
  "acknowledged" : true
}
```

### Создайте индекс test с 0 реплик и 1 шардом
```bash=
➜ curl -X GET -u undefined:$ESPASS "localhost:9200/_cat/indices/*?v=true&s=index&pretty"
health status index uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   test  wtfdytcJROyQPoiK1ir89w   1   0          0            0       208b           208b
```

### Создайте snapshot состояния кластера elasticsearch
```bash=
ls -l elasticsearch-7.11.1/snapshots/

total 48
-rw-r--r-- 1 elasticsearch elasticsearch   434 Feb 18 20:31 index-0
-rw-r--r-- 1 elasticsearch elasticsearch     8 Feb 18 20:31 index.latest
drwxr-xr-x 3 elasticsearch elasticsearch  4096 Feb 18 20:31 indices
-rw-r--r-- 1 elasticsearch elasticsearch 30964 Feb 18 20:31 meta-pPb7QEQtSCGhv9-FIKQfUw.dat
-rw-r--r-- 1 elasticsearch elasticsearch   266 Feb 18 20:31 snap-pPb7QEQtSCGhv9-FIKQfUw.dat
```

### Удалите индекс test и создайте индекс test-2
```bash=
➜ curl -X GET -u undefined:$ESPASS "localhost:9200/_cat/indices/*?v=true&s=index&pretty"
health status index  uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   test-2 8swc76KiSiCK_OfgOP0h1w   1   0          0            0       208b           208b
```

### Восстановите состояние кластера elasticsearch из snapshot, созданного ранее
```bash=
curl -X POST -u undefined:$ESPASS "localhost:9200/_snapshot/netology_backup/snapshot_1/_restore?pretty"
```

```bash=
➜ curl -X GET -u undefined:$ESPASS "localhost:9200/_cat/indices/*?v=true&s=index&pretty"
health status index  uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   test   kY6Fs7hOSL2mKoKiqOR3WA   1   0          0            0       208b           208b
green  open   test-2 8swc76KiSiCK_OfgOP0h1w   1   0          0            0       208b           208b
```