У меня есть индекс (данные в него не индексируются, только поиск по нему осуществляется по средствам кибаны и ее дашбоардов) у которого постоянно растет размер fielddata. Стал разбираться и обнаружил с помощью запроса GET /_cat/fielddata?v&s=size что филддата растет для поля request_uri.keyword.
На сколько я понял из документации
филддата по умолчанию выключена (а сам я ее не включал)
филддата не может быть для keyword полей.
Так же путем практических тестов стало понятно что филддата растет из-за того что делаешь сортировку в табличном виджете содержащем поле request_uri.keyword
Филддата растет и никогда сама не сбрасывается. Сбросить ее можно только либо рестартанув кластер, либо отправив запрос POST /<index_name>/_cache/clear?fielddata=true
Кроме того, обнаружил что другой аналогичный индекс, но в который идет непрерывная индексация - филддату тоже имеет, но она постоянно сбрасывается (это видно на графике):
Это выключает fielddata для request_uri, а не для request_uri.keyword. Но на самом деле это не важно. Все равно там fielddata быть не должно. То, что вы видите в stats это на самом деле не fielddata, а global ordinals (часть docvalues, которая храниться в памяти) расти они немного могут, но много места они занимать не должны.
Я понимаю это, но при попытке прописать эту опцию для request_uri.keyword эластик выдает ошибку.
Как можно убедиться что это именно global ordinals, а не fielddata? Текущий способ проверки о котором я писал выше завел меня в заблуждение (и не только меня, мои коллеги из другой организации попались на ту же удочку)
Ок. Немного это сколько? Немного в рамках одного индеса или как? В моем кластере памяти на это уходит довольно много и как я уже сказал выше, если в индекс идет непрерывная индексация то объем занимаемой памяти действительно не так велик и он очищается периодически. А если говорить об индексах по которым осуществляется только поиск (индексации нет), объем занимаемой памяти только растет и растет и помогает либо рестарт ноды, либо POST /<index_name>/_cache/clear?fielddata=true (опять же таки судя по этому запросу должна происходить очистка именно fielddata, а не global ordinals). В противном случае если не произвести очистку то со временем нода падает по памяти.
По умолчанию, размер памяти по fielddata ограничин 30%. Так что у вас там где-то еще что-то убегает. На стаистику надо посмотреть, перед самым падением.
По умолчанию, размер памяти по fielddata ограничин 30%. Так что у вас там где-то еще что-то убегает.
Ну у меня хип сайз 32Гб , без филддаты (если ее очистить принудительно) хип сайз забит как раз процентов на 70%, когда филддата достигает своих 30% класетр падает. Так что ничего не утекает больше. А если филддату чистить раз в сутки например то кластер и вовсе не упадет.
Игорь, могли бы вы ответить на мои вопросы из прошлого сообщения? Я так и не пойму с чем же я все таки имею дело с fielddata или же с global ordinals...
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.