# Fielddata там, где ее быть не должно

**URL:** <https://discuss.elastic.co/t/fielddata/165062>\
**Category:** Вопросы на русском языке\
**Created:** [January 21, 2019, 2:21pm UTC](https://discuss.elastic.co/t/fielddata/165062 "2019-01-21T14:21:04Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)\
**Post date:** [January 21, 2019, 2:21pm UTC](https://discuss.elastic.co/t/fielddata/165062/1 "2019-01-21T14:21:04Z")

</div>

У меня есть индекс (данные в него не индексируются, только поиск по нему осуществляется по средствам кибаны и ее дашбоардов) у которого постоянно растет размер fielddata. Стал разбираться и обнаружил с помощью запроса GET /\_cat/fielddata?v&s=size что филддата растет для поля request\_uri.keyword.  
На сколько я понял из документации

1. филддата по умолчанию выключена (а сам я ее не включал)
2. филддата не может быть для keyword полей.

Так же путем практических тестов стало понятно что филддата растет из-за того что делаешь сортировку в табличном виджете содержащем поле request\_uri.keyword  
Филддата растет и никогда сама не сбрасывается. Сбросить ее можно только либо рестартанув кластер, либо отправив запрос POST /\<index\_name\>/\_cache/clear?fielddata=true

Кроме того, обнаружил что другой аналогичный индекс, но в который идет непрерывная индексация - филддату тоже имеет, но она постоянно сбрасывается (это видно на графике):

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/3/1/31afa32e950df0491df88d7ab6c8bc9aa7f57e2d.png)

Вопросы:

1. Какова природа филддаты в моем случае?
2. Как мне избавится от филддаты?

---

<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:** [January 22, 2019, 2:12pm UTC](https://discuss.elastic.co/t/fielddata/165062/2 "2019-01-22T14:12:56Z")

</div>

Какая версия elasticsearch и как выглядит маппинг для request\_uri в индексе, где филддата растет?

---

<div class="post-metadata">

**Author:** ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)\
**Post date:** [January 23, 2019, 8:18am UTC](https://discuss.elastic.co/t/fielddata/165062/3 "2019-01-23T08:18:05Z")

</div>

эластик 6.5.2  
Мапинг вот такой:

> ```
> "request_uri" : {
> "type" : "text",
> "fields" : {
> "keyword" : {
> "type" : "keyword",
> "ignore_above" : 256
> }
> }
> }
> 
> ```

Пробовал вот так:

> ```
> "request_uri" : {
> "type" : "text",
> "fielddata" : "false",
> "fields" : {
> "keyword" : {
> "type" : "keyword",
> "ignore_above" : 256
> }
> }
> }
> 
> ```

После чего сделал reindex, но филддата все равно появляется.

---

<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:** [January 23, 2019, 2:51pm UTC](https://discuss.elastic.co/t/fielddata/165062/4 "2019-01-23T14:51:22Z")

</div>

> [@111126](#):
>
> Пробовал вот так:

Это выключает fielddata для `request_ur`i, а не для `request_uri.keyword`. Но на самом деле это не важно. Все равно там fielddata быть не должно. То, что вы видите в stats это на самом деле не fielddata, а global ordinals (часть docvalues, которая храниться в памяти) расти они немного могут, но много места они занимать не должны.

---

<div class="post-metadata">

**Author:** ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)\
**Post date:** [January 28, 2019, 2:21pm UTC](https://discuss.elastic.co/t/fielddata/165062/5 "2019-01-28T14:21:33Z")

</div>

> [@Igor\_Motov](#):
>
> Это выключает fielddata для `request_ur` i, а не для `request_uri.keyword` .

Я понимаю это, но при попытке прописать эту опцию для `request_uri.keyword` эластик выдает ошибку.

> [@Igor\_Motov](#):
>
> Все равно там fielddata быть не должно. То, что вы видите в stats это на самом деле не fielddata, а global ordinals (часть docvalues, которая храниться в памяти)

Как можно убедиться что это именно global ordinals, а не fielddata? Текущий способ проверки о котором я писал выше завел меня в заблуждение (и не только меня, мои коллеги из другой организации попались на ту же удочку)

> [@Igor\_Motov](#):
>
> global ordinals (часть docvalues, которая храниться в памяти) расти они немного могут, но много места они занимать не должны.

Ок. Немного это сколько? Немного в рамках одного индеса или как? В моем кластере памяти на это уходит довольно много и как я уже сказал выше, если в индекс идет непрерывная индексация то объем занимаемой памяти действительно не так велик и он очищается периодически. А если говорить об индексах по которым осуществляется только поиск (индексации нет), объем занимаемой памяти только растет и растет и помогает либо рестарт ноды, либо POST /\<index\_name\>/\_cache/clear?fielddata=true (опять же таки судя по этому запросу должна происходить очистка именно fielddata, а не global ordinals). В противном случае если не произвести очистку то со временем нода падает по памяти.

---

<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:** [January 28, 2019, 3:24pm UTC](https://discuss.elastic.co/t/fielddata/165062/6 "2019-01-28T15:24:02Z")

</div>

По умолчанию, размер памяти по fielddata ограничин 30%. Так что у вас там где-то еще что-то убегает. На стаистику надо посмотреть, перед самым падением.

---

<div class="post-metadata">

**Author:** ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)\
**Post date:** [January 30, 2019, 2:15pm UTC](https://discuss.elastic.co/t/fielddata/165062/7 "2019-01-30T14:15:48Z")

</div>

> По умолчанию, размер памяти по fielddata ограничин 30%. Так что у вас там где-то еще что-то убегает.

Ну у меня хип сайз 32Гб , без филддаты (если ее очистить принудительно) хип сайз забит как раз процентов на 70%, когда филддата достигает своих 30% класетр падает. Так что ничего не утекает больше. А если филддату чистить раз в сутки например то кластер и вовсе не упадет.

Игорь, могли бы вы ответить на мои вопросы из прошлого сообщения? Я так и не пойму с чем же я все таки имею дело с fielddata или же с global ordinals...

---

<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:** [February 11, 2019, 2:40pm UTC](https://discuss.elastic.co/t/fielddata/165062/8 "2019-02-11T14:40:22Z")

</div>

> [@111126](#):
>
> Я так и не пойму с чем же я все таки имею дело с fielddata или же с global ordinals...

Скорее всего, вы имеете дело с global ordinals которые в статистике подходят под категорией fielddata.

---

<div class="post-metadata">

**Author:** ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)\
**Post date:** [February 12, 2019, 12:52pm UTC](https://discuss.elastic.co/t/fielddata/165062/9 "2019-02-12T12:52:19Z")

</div>

> [@Igor\_Motov](#):
>
> Скорее всего, вы имеете дело с global ordinals которые в статистике подходят под категорией fielddata.

Можете подсказать как бороться с проблемой?

---

<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:** [February 12, 2019, 2:01pm UTC](https://discuss.elastic.co/t/fielddata/165062/10 "2019-02-12T14:01:45Z")

</div>

> Можете подсказать как бороться с проблемой?

Добавить больше нод. 70% это слишком много.

Можно еще попробовать убавить `indices.fielddata.cache.size`

---

<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:** [March 12, 2019, 2:01pm UTC](https://discuss.elastic.co/t/fielddata/165062/11 "2019-03-12T14:01:45Z")

</div>

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