# Правильно ли я использую script?

**URL:** <https://discuss.elastic.co/t/script/213313>\
**Category:** Вопросы на русском языке\
**Created:** [December 30, 2019, 7:08am UTC](https://discuss.elastic.co/t/script/213313 "2019-12-30T07:08:39Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)\
**Post date:** [December 30, 2019, 7:08am UTC](https://discuss.elastic.co/t/script/213313/1 "2019-12-30T07:08:39Z")

</div>

Добрый день! У меня есть порядка 45 тыс. поисковых запросов (это шаблоны поиска сохраненные нашими пользователями)

Я хотел загрузить их в es и использовать [search template](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html#search-template) для выполнения, однако, вставив порядка 13 тыс. скорость вставки сильно упала, и логика мне подсказывает, что я делаю что-то не правильно.

Предназначено ли скриптовое хранилище под такое количество данных?

---

<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:** [December 30, 2019, 2:23pm UTC](https://discuss.elastic.co/t/script/213313/2 "2019-12-30T14:23:59Z")

</div>

> [@IvanTushin](#):
>
> Предназначено ли скриптовое хранилище под такое количество данных?

Скажем так, на такой объем мы не рассчитывали. Хотелось бы узнать, какая цель хранение этих запросов как шаблонов?

---

<div class="post-metadata">

**Author:** ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)\
**Post date:** [December 30, 2019, 3:10pm UTC](https://discuss.elastic.co/t/script/213313/3 "2019-12-30T15:10:35Z")

</div>

Я планировал использовать их для отслеживания изменений в индексах. Т.е. по ним идет цикл и проверяет наличие новых данных, а что бы не тащить все данные за все время подставляются некоторые даты и параметры.

---

<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:** [December 30, 2019, 4:03pm UTC](https://discuss.elastic.co/t/script/213313/4 "2019-12-30T16:03:15Z")

</div>

Вы на [перколятор](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-percolate-query.html) не смотрели?

---

<div class="post-metadata">

**Author:** ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)\
**Post date:** [December 30, 2019, 4:23pm UTC](https://discuss.elastic.co/t/script/213313/5 "2019-12-30T16:23:33Z")

</div>

Конечно смотрел, но структура подразумевает дочерне родительские отношения документов, поичем дочерние документы появляются гораздо позже. Все это не позволяет мне пользоваться перколятором.

---

<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:** [December 30, 2019, 4:25pm UTC](https://discuss.elastic.co/t/script/213313/6 "2019-12-30T16:25:49Z")

</div>

> [@IvanTushin](#):
>
> но структура подразумевает дочерне родительские отношения документов

Это вы где такое нашли?

---

<div class="post-metadata">

**Author:** ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)\
**Post date:** [December 30, 2019, 5:32pm UTC](https://discuss.elastic.co/t/script/213313/7 "2019-12-30T17:32:47Z")

</div>

Я еще раз ознакомился с документацией, действительно, там ничего не сказано про это. Однако есть

> At search time, the document specified in the request gets parsed into a Lucene document and is stored in a in-memory temporary Lucene index.

Как это работает с запросами содержащими has\_child запросы?

Во вторых, для дочерних документов я исключаю текстовые поля из \_source из-за их большого размера, так что извлечь их через GET не получится. Я сейчас говорю про пример который позволяет указать id документа из другого индекса.

```
GET /my-index/_search
{
    "query" : {
        "percolate" : {
            "field": "query",
            "index" : "my-index",
            "id" : "2",
            "version" : 1 
        }
    }
}

```

---

<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:** [December 30, 2019, 6:02pm UTC](https://discuss.elastic.co/t/script/213313/8 "2019-12-30T18:02:31Z")

</div>

Понял, если под "структурой" подразумеваются ваши запросы, то с запросами с `has_child` и `has_parent` действительно работать не будет, я думал вы про структуру самого индекса перколятора говорите. Тогда перколятор, действительно, отпадает. Я бы тогда хранил эти запросы как документы в поле с типом `"object"` и [`"enabled"`:`"false"`](https://www.elastic.co/guide/en/elasticsearch/reference/7.5/enabled.html).

> [@IvanTushin](#):
>
> Во вторых, для дочерних документов я исключаю текстовые поля из \_source из-за их большого размера, так что извлечь их через GET не получится. Я сейчас говорю про пример который позволяет указать id документа из другого индекса.

> **[Get API | Elasticsearch Guide \[7.5\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-get.html#get-source-filtering)**

---

<div class="post-metadata">

**Author:** ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)\
**Post date:** [December 30, 2019, 6:34pm UTC](https://discuss.elastic.co/t/script/213313/9 "2019-12-30T18:34:09Z")

</div>

Помимо es, у нас еще есть mysql, так что я не вижу смысла использовать es в роли БД. Просто я хотел оптимизировать работу сохранив поисковые шаблоны и не таскать гигабайты запросов, а так разницы нет, что из мускуля получать, что из эластика.

Спасибо за помощь и с наступающим Новым Годом!

---

<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:** [January 27, 2020, 6:44pm UTC](https://discuss.elastic.co/t/script/213313/10 "2020-01-27T18:44:39Z")

</div>

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