# Как поменять количество шардов?

**URL:** https://discuss.elastic.co/t/topic/171914
**Category:** Вопросы на русском языке
**Created:** [March 12, 2019, 10:01am UTC](https://discuss.elastic.co/t/topic/171914 "2019-03-12T10:01:36Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 12, 2019, 10:01am UTC](https://discuss.elastic.co/t/topic/171914/1 "2019-03-12T10:01:36Z")

</div>

Добрый день.

У меня настроен кластер из одного сервера, в нем добавлено несколько паттернов индексов. Каждый день при создании нового индекса в нём появляются 5 лишних шардов.  
Первое время я их чистил вручную командой

> curl --header "content-type: application/JSON" -XPUT 'localhost:9200/\_settings' -d '  
> {  
> "index" : {  
> "number\_of\_replicas" : 0  
> }  
> }'

Но сейчас решил сделать всё правильно и обновить дефолный шаблон индекса. И сразу столкнулся с проблемой.

Если вводить команду

> PUT \_template/all  
> {  
> "template": "\*",  
> "settings": {  
> "number\_of\_shards": 5,  
> "number\_of\_replicas": 0  
> }  
> }

То возвращается PUT: command not found.

> POST \_template/default  
> {  
> "template": ["\*"]  
> "order": -1  
> "settings": {  
> "number\_of\_shards": "5",  
> "number\_of\_replicas": "0"  
> }  
> }

Позволяет вводить данные, но после ввода последнего символа я могу закончить ввод только через ctrl+c. Похоже что тут я что-то делаю неправильно.

В одном из выводов logstash у меня есть ссылка на шаблон

```
output {
  if "winsrv" in [tags] {
    elasticsearch {
        hosts => "localhost:9200"
        index => "winsrv-%{+YYYY.MM.dd}"
         template => "/etc/logstash/conf.d/index_templates/winlogbeat.template.json"
         template_name => "winlogbeat"
         template_overwrite => true
    }
}

```

В конце этого шаблона я добавил следующее

```
"settings": {
"index": {
  "mapping": {
    "total_fields": {
      "limit": 10000
    }
  },
  "number_of_shards": 1,
  "refresh_interval": "5s",
  "number_of_replicas" : 0
}
}
}

```

Но индексы winsrv все равно продолжают создаваться с 5 лишними шардами.

Извините что несколько сумбурно написано, я только начал изучать ELK.

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [March 12, 2019, 1:44pm UTC](https://discuss.elastic.co/t/topic/171914/2 "2019-03-12T13:44:34Z")

</div>

> Позволяет вводить данные, но после ввода последнего символа я могу закончить ввод только через ctrl+c. Похоже что тут я что-то делаю неправильно.

Как вы это вводите? С использованием curl или kibana?

> Но индексы winsrv все равно продолжают создаваться с 5 лишними шардами.

Про какие шарды идет речь - праймари или реплики? Как вы узнали что у вас лишние шарды?

---

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 12, 2019, 5:10pm UTC](https://discuss.elastic.co/t/topic/171914/3 "2019-03-12T17:10:04Z")

</div>

> Как вы это вводите? С использованием curl или kibana?

Пытался просто вставить через консоль...надо было через curl -PUT \_template/default? У меня выдает curl: (6) Could not resolve host: \_template.

> Про какие шарды идет речь - праймари или реплики? Как вы узнали что у вас лишние шарды?

Праймари. Если я правильно понимаю, так как у меня один хост, реплик быть не может.  
Выглядит это вот так:

 ![shards](https://us1.discourse-cdn.com/elastic/original/3X/d/b/dbc8ad1ed8ba23015f6096185e8bb096458d0b73.png)

Как только формируется новый индекс, в нём остается 5 нерапределенных шардов. Вроде как, в шаблоне elasticsearch по умолчанию, прописано 6 шардов и 1 реплика. И так как у меня один сервер, 5 шардов остаются нераспреленными.

Поправьте, если что-то написал неправильно.

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [March 12, 2019, 6:16pm UTC](https://discuss.elastic.co/t/topic/171914/4 "2019-03-12T18:16:04Z")

</div>

> [@KOTOXJle6](#):
>
> Пытался просто вставить через консоль...надо было через curl -PUT \_template/default? У меня выдает curl: (6) Could not resolve host: \_template.

Команды в руководстве приведены показаны для кибаны. Для запуска в curl надо нажать на ссылку "COPY TO CURL" под примером. В вашем случае это будет выглядеть как-то так:

```auto
curl -XPOST "http://ИМЯ-МАШИНЫ-ИЛИ-IP:9200/_template/default" -H 'Content-Type: application/json' -d'
{
  "template": ["*"],
  "order": -1,
  "settings": {
    "number_of_shards": "5",
    "number_of_replicas": "0"
  }
}'

```

> [@KOTOXJle6](#):
>
> Как только формируется новый индекс, в нём остается 5 нерапределенных шардов. Вроде как, в шаблоне elasticsearch по умолчанию, прописано 6 шардов и 1 реплика. И так как у меня один сервер, 5 шардов остаются нераспреленными.

По умолчанию, в старых версиях 5 праймари и 1 реплика для каждой праймари (то есть 10 шард).

---

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 13, 2019, 5:10am UTC](https://discuss.elastic.co/t/topic/171914/5 "2019-03-13T05:10:47Z")

</div>

Возвращается ошибка

```
 {"error":{"root_cause":[{"type":"action_request_validation_exception","reason":"Validation 
Failed: 1: index patterns are missing;"}],"type":"action_request_validation_exception","reason":"Validation Failed: 1: index 
patterns are missing;"},"status":400}

```

> По умолчанию, в старых версиях 5 праймари и 1 реплика для каждой праймари (то есть 10 шард).

Спасибо за информацию. Версия 6.6. Она уже считается старой?

---

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 13, 2019, 1:23pm UTC](https://discuss.elastic.co/t/topic/171914/6 "2019-03-13T13:23:42Z")

</div>

Если я правильно понял, у меня отсутствует такой шаблон. Команда

```
curl -get "http://localhost:9200/_template/*"

```

Возвращает довольно большой список, в котором много шаблонов, но шаблона с именем default там нет. Все шаблоны имеют вот такие параметры number\_of\_shards и number\_of\_replicas

> ".monitoring-beats":{"order":0,"version":6050399,"index\_patterns":[".monitoring-beats-6-\*"],"settings":{"index":{"format":"6","codec":"best\_compression","number\_of\_shards":"1","auto\_expand\_replicas":"0-1","number\_of\_replicas":"0"}}

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [March 13, 2019, 1:56pm UTC](https://discuss.elastic.co/t/topic/171914/7 "2019-03-13T13:56:07Z")

</div>

> [@KOTOXJle6](#):
>
> Возвращается ошибка

Да, по памяти писал, напутал немного. В 6.6 должно быть так:

```auto
curl -XPUT "http://ИМЯ-МАШИНЫ-ИЛИ-IP:9200/_template/default" -H 'Content-Type: application/json' -d'
{
  "index_patterns": [
    "*"
  ],
  "order": -1,
  "settings": {
    "number_of_shards": "5",
    "number_of_replicas": "0"
  }
}'

```

> [@KOTOXJle6](#):
>
> Спасибо за информацию. Версия 6.6. Она уже считается старой?

6.6 - это самое то на данный момент, ничего новее пока не выпустили. Но, поскольку, я над 8-й версией в данной момент работаю, то для меня 6-я уже старая 🙂 . Правильнее было бы сказать, "в текущих версиях". Начиная с 7.0.0 это изменится.

---

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 13, 2019, 2:04pm UTC](https://discuss.elastic.co/t/topic/171914/8 "2019-03-13T14:04:55Z")

</div>

> [@Igor\_Motov](#):
>
> curl -XPUT "[http://ИМЯ-МАШИНЫ-ИЛИ-IP:9200/\_template/default](http://xn-----IP-nqe8ccba6agbq7n0b7c:9200/_template/default)" -H 'Content-Type: application/json' -d' { "index\_patterns": ["\*"], "order": -1, "settings": { "number\_of\_shards": "5", "number\_of\_replicas": "0" } }'

Круто! Все получилось! Во всяком случае результат {"acknowledged":true}

> 6.6 - это самое то на данный момент, ничего новее пока не выпустили. Но, поскольку, я над 8-й версией в данной момент работаю, то для меня 6-я уже старая 🙂 . Правильнее было бы сказать, "в текущих версиях". Начиная с 7.0.0 это изменится.

Удивительное время. Только начинаешь вникать в актуальную версию продукта, а она уже устарела.

Если вас не затруднит, расскажите еще пожалуйста, почему у меня параметры количества реплик не применяются из шаблона winlogbeat.template.json?

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [March 13, 2019, 2:16pm UTC](https://discuss.elastic.co/t/topic/171914/9 "2019-03-13T14:16:14Z")

</div>

Посмотрите на все шаблоны, которые применимы к вашему индексу и посмотрите на установки в шаблоне, где `order` больше всех остальных. Эти установки должны быть применены, если вы ничего не задаете при создании самого индекса. И еще - изменение шаблонов на уже созданные индексы никак не влияют.

---

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 14, 2019, 5:04am UTC](https://discuss.elastic.co/t/topic/171914/10 "2019-03-14T05:04:54Z")

</div>

Шаблоны я не добавлял, поэтому кроме дефолта больше ничего применяться не должно.  
Сейчас заметил что в шаблоне `winlogbeat.template.json` не был указан `order`. Добавил `"order": 1,` и для проверки поставил 6 шард. Если все правильно, то при создании следующего индекса у меня должен быть 1 unassigned shard?

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [March 14, 2019, 2:14pm UTC](https://discuss.elastic.co/t/topic/171914/11 "2019-03-14T14:14:12Z")

</div>

> [@KOTOXJle6](#):
>
> ... и для проверки поставил 6 шард. Если все правильно, то при создании следующего индекса у меня должен быть 1 unassigned shard?

Это как? Я что-то логику не очень понимаю. Если у вас

```auto
    "number_of_shards": "6",
    "number_of_replicas": "0"

```

то у вас будет 6 assigned primary и 0 unassigned replicas

Если у вас

```auto
    "number_of_shards": "6",
    "number_of_replicas": "1"

```

то у вас будет 6 assigned primary и 6 unassigned replicas (1 копия для каждой праймари)

Соответственно

```auto
    "number_of_shards": "6",
    "number_of_replicas": "2"

```

приведет к 6 assigned primary и 12 unassigned replicas (2 копии для каждой праймари - 6\*2=12 ).

---

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 15, 2019, 6:26am UTC](https://discuss.elastic.co/t/topic/171914/12 "2019-03-15T06:26:34Z")

</div>

Да, я неправильно написал. Неназначенные шарды будут зависеть от общего количества шард и реплик.  
Чтобы проверить работает ли шаблон для winsrv, нужно поменять количество реплик и тогда в новых индексах должны появиться неназначенные шарды, либо посмотреть текущее количество шард командой

```
curl GET http://localhost:9200/_cat/shards/winsrv-2019.03.1*

```

Сейчас показывает 5 в индексах за последние дни, а в шаблоне 6. Что-то не работает. Но тема уже ушла от основного вопроса, думаю тут можно не продолжать. В крайнем случае открою новую.

Большое спасибо за помощь!

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [March 15, 2019, 2:47pm UTC](https://discuss.elastic.co/t/topic/171914/13 "2019-03-15T14:47:12Z")

</div>

Если вы пришлете все шаблоны, которые выводятся по

```auto
curl -XGET "http://ИМЯ-МАШИНЫ-ИЛИ-IP:9200/_template"

```

я смогу, скорее всего, объяснить, почему оно не работает. Сюда вывод скорее всего не поместиться, так что лучше положить куда-нибудь вроде [gist.github.com](http://gist.github.com) и прислать сюда ссылку.

---

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 18, 2019, 5:06am UTC](https://discuss.elastic.co/t/topic/171914/14 "2019-03-18T05:06:25Z")

</div>

> [@Igor\_Motov](#):
>
> curl -XGET "[http://ИМЯ-МАШИНЫ-ИЛИ-IP:9200/\_template](http://xn-----IP-nqe8ccba6agbq7n0b7c:9200/_template)"

Вот что получилось [ELK Templates · GitHub](https://gist.github.com/KOTOXJle6/77cd2568a9e831cb27b0028e65ed6ec9)

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [March 18, 2019, 10:55pm UTC](https://discuss.elastic.co/t/topic/171914/15 "2019-03-18T22:55:33Z")

</div>

У вас кусок вывода отрезан. Нужен весь вывод.

---

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 20, 2019, 4:54am UTC](https://discuss.elastic.co/t/topic/171914/16 "2019-03-20T04:54:32Z")

</div>

> [@Igor\_Motov](#):
>
> curl -XGET "[http://ИМЯ-МАШИНЫ-ИЛИ-IP:9200/\_template](http://xn-----IP-nqe8ccba6agbq7n0b7c:9200/_template)"

Извините. Обновил.

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [March 20, 2019, 2:51pm UTC](https://discuss.elastic.co/t/topic/171914/17 "2019-03-20T14:51:09Z")

</div>

У вас нет темплетов для индекса winsrv. Единственный темплейт, который будет работать для этого индекса это default и в нем 5 шард:

```auto
{
  "default": {
    "order": -1,
    "index_patterns": [
      "*"
    ],
    "settings": {
      "index": {
        "number_of_shards": "5",
        "number_of_replicas": "0"
      }
    },
}

```

---

<div class="post-metadata">

### Author: ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)
#### Post date: [March 21, 2019, 5:30am UTC](https://discuss.elastic.co/t/topic/171914/18 "2019-03-21T05:30:52Z")

</div>

А разве к нему не должен применяться шаблон, который я указываю в Output Logstash'а?

```
template => "/etc/logstash/conf.d/index_templates/winlogbeat.template.json"
```

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [March 22, 2019, 6:51pm UTC](https://discuss.elastic.co/t/topic/171914/19 "2019-03-22T18:51:28Z")

</div>

> А разве к нему не должен применяться шаблон, который я указываю в Output Logstash'а?

К нему должен применяться шаблон, у которого совпадает маска, и о котором elasticsearch знает. О шабоне в logstash elasticsearch очевидно не знает. Это очевидно по списку шаблонов, который вы мне прислали. Почему это происходит? Это уже совсем другой вопрос. Надо смотреть на конфигурацию logstash и разбираться в чем проблема.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [April 19, 2019, 6:51pm UTC](https://discuss.elastic.co/t/topic/171914/20 "2019-04-19T18:51:39Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
