# Перепарсинг существующих индексов Logstash

**URL:** <https://discuss.elastic.co/t/logstash/269025>\
**Category:** Вопросы на русском языке\
**Created:** [April 1, 2021, 11:19am UTC](https://discuss.elastic.co/t/logstash/269025 "2021-04-01T11:19:02Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![frostwar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/frostwar/32/86239_2.png) [@frostwar](https://discuss.elastic.co/u/frostwar)\
**Post date:** [April 1, 2021, 11:19am UTC](https://discuss.elastic.co/t/logstash/269025/1 "2021-04-01T11:19:02Z")

</div>

Как перепарсить через Logstash существующие индексы?  
У меня в Logstash приходили FileBeat какое-то время. Потом появилась задача выделять отдельные поля. Изменил конфиг, но применяется только ко вновь поступившим данным.

Как заставить перепарсить то, что уже ранее пришло в elasticsearch?

---

<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:** [April 1, 2021, 2:44pm UTC](https://discuss.elastic.co/t/logstash/269025/2 "2021-04-01T14:44:31Z")

</div>

Filebeat хранит информацию о уже обработанных файлах в файле [`registry`](https://www.elastic.co/guide/en/beats/filebeat/current/how-filebeat-works.html). Расположение этого файла определяется настройкой [`filebeat.registry.path`](https://www.elastic.co/guide/en/beats/filebeat/current/configuration-general-options.html#_registry_path). Если вы ничего не меняли, то это `/var/lib/filebeat/registry`. Если filebeat остановить и этот файл удалить, то filebeat при следующем запуске начнет обрабатывать все по новой.

---

<div class="post-metadata">

**Author:** ![frostwar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/frostwar/32/86239_2.png) [@frostwar](https://discuss.elastic.co/u/frostwar)\
**Post date:** [April 1, 2021, 3:26pm UTC](https://discuss.elastic.co/t/logstash/269025/3 "2021-04-01T15:26:18Z")

</div>

Filebeat был на стороне "чужой системы". Поступали данные. Я их пропарсил с помощью Logstash и положил себе в эластик. Теперь задача дополнительно допарсить то, что уже у меня есть в индексах.  
Грубо говоря у меня в каждом документе есть поле message. Из него мне хотелось бы дополнительно выделить некоторые поля. Индекс хранится месяц.

---

<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:** [April 1, 2021, 3:38pm UTC](https://discuss.elastic.co/t/logstash/269025/4 "2021-04-01T15:38:37Z")

</div>

> **[Elasticsearch input plugin | Logstash Reference \[7.12\] | Elastic](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-elasticsearch.html)**

---

<div class="post-metadata">

**Author:** ![frostwar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/frostwar/32/86239_2.png) [@frostwar](https://discuss.elastic.co/u/frostwar)\
**Post date:** [April 1, 2021, 3:49pm UTC](https://discuss.elastic.co/t/logstash/269025/5 "2021-04-01T15:49:55Z")

</div>

Спасибо!

---

<div class="post-metadata">

**Author:** ![frostwar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/frostwar/32/86239_2.png) [@frostwar](https://discuss.elastic.co/u/frostwar)\
**Post date:** [April 5, 2021, 12:26pm UTC](https://discuss.elastic.co/t/logstash/269025/6 "2021-04-05T12:26:22Z")

</div>

А вы не подскажете как в индексе выбирать документы, которые старше какой-либо даты (например текущей)? Что надо прописать в input?  
Эластик начинает сейчас делать выборку за все даты (включая год назад), а мне нужны актуальные даты. Сейчас input выглядит так:

> ```
> input {
> elasticsearch {
> hosts => "some-host"
> index => "testindex-*"
> #query => '{ "query": { "query_string": { "query": "*" } } }'
> size => 5000
> scroll => "1m"
> docinfo => false
> slices => 4
> }
> }
> 
> ```

---

<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:** [April 5, 2021, 2:16pm UTC](https://discuss.elastic.co/t/logstash/269025/7 "2021-04-05T14:16:52Z")

</div>

> **[Range query | Elasticsearch Guide \[7.12\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html#ranges-on-dates)**

---

<div class="post-metadata">

**Author:** ![frostwar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/frostwar/32/86239_2.png) [@frostwar](https://discuss.elastic.co/u/frostwar)\
**Post date:** [April 5, 2021, 8:45pm UTC](https://discuss.elastic.co/t/logstash/269025/10 "2021-04-05T20:45:30Z")

</div>

Хочу перепарсить значения индекса за последние 4 дня. Если указываю запрос, то Logstash ничего не возвращает

> ```
> input {
> elasticsearch {
> hosts => "testhost"
> index => "testindex-*"
> query => '{ "query": { "sort": ["_doc"], "query_string": { "query": "*" }, "range": { "timestamp": { "gte": "now-4d/d", "lte": "now/d" } } } }'
> size => 5000
> scroll => "1m"
> docinfo => false
> slices => 4
> }
> }
> 
> ```

Если же комментирую строку query, то данные начинают идти. Что я делаю не так?

---

<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:** [April 5, 2021, 9:05pm UTC](https://discuss.elastic.co/t/logstash/269025/11 "2021-04-05T21:05:28Z")

</div>

Ваш запрос сейчас выглядит так:

```auto
{
  "query": {
    "sort": [
      "_doc"
    ],
    "query_string": {
      "query": "*"
    },
    "range": {
      "timestamp": {
        "gte": "now-4d/d",
        "lte": "now/d"
      }
    }
  }
}

```

Если вы внимательно посмотрите на [пример в документации](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-elasticsearch.html), то увидете, что `sort` должен быть на одном уровне с `query` и `query` может содержать только один запрос, а у вас их два - `query_string` и `range`. Если вам надо все включая текущие события, то `lte` можно убрать. И поле у вас, наверное, не `timestamp` а `@timestamp`? В конечном итоге должно выглядеть так:

```auto
{
  "query": {
    "range": {
      "@timestamp": {
        "gte": "now-4d/d"
      }
    }
  },
  "sort": [
    "_doc"
  ]
}

```

---

<div class="post-metadata">

**Author:** ![frostwar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/frostwar/32/86239_2.png) [@frostwar](https://discuss.elastic.co/u/frostwar)\
**Post date:** [April 5, 2021, 9:25pm UTC](https://discuss.elastic.co/t/logstash/269025/12 "2021-04-05T21:25:56Z")

</div>

> [@Igor\_Motov](#):
>
> ```auto
> {
> "query": {
> "range": {
> "@timestamp": {
> "gte": "now-4d/d"
> }
> }
> },
> "sort": [
> "_doc"
> ]
> }
> 
> ```

Спасибо, Игорь, за подробный ответ. Всё заработало!

---

<div class="post-metadata">

**Author:** ![frostwar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/frostwar/32/86239_2.png) [@frostwar](https://discuss.elastic.co/u/frostwar)\
**Post date:** [April 9, 2021, 8:43am UTC](https://discuss.elastic.co/t/logstash/269025/13 "2021-04-09T08:43:05Z")

</div>

Добрый день. Появилось "задваивание" данных. Грубо говоря вижу одинаковые документы, которые продублированы 5, 8 раз и т.д. Есть подозрение, что когда мы перегружаем службу Logstash система начинает дублировать данные. Вопрос: как избежать дубляжа?

 ![1](https://us1.discourse-cdn.com/elastic/original/3X/3/b/3b0394832de6089913e413974fd32949a512930c.jpeg)

Вот конфиг:

 ![2](https://us1.discourse-cdn.com/elastic/original/3X/b/9/b91d8d9d81cb35152d0ed219424d02fa3d902697.jpeg)

Может есть какая-то настройка, чтобы данные не дублировались или можно как-то убрать дубликаты из существующего индекса?

---

<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:** [April 12, 2021, 2:58pm UTC](https://discuss.elastic.co/t/logstash/269025/14 "2021-04-12T14:58:48Z")

</div>

> **[Little Logstash Lessons: Handling Duplicates](https://www.elastic.co/blog/logstash-lessons-handling-duplicates)**
>
> Approaches for de-duplicating data in Elasticsearch using Logstash. We also go into examples of how you can use IDs in Elasticsearch Output.

---

<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:** [May 10, 2021, 2:58pm UTC](https://discuss.elastic.co/t/logstash/269025/15 "2021-05-10T14:58:51Z")

</div>

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